OSDN Git Service
Andreas Gampe [Wed, 5 Nov 2014 18:18:32 +0000 (10:18 -0800)]
ART: Refactor dex2oat
Take the huge dex2oat main function apart. Move to ScopedLogging.
Bug:
18276913
Bug:
17444504
Change-Id: Iab3d7437d60508088cb16bf33da0c5defbf7ae03
Ian Rogers [Thu, 6 Nov 2014 22:28:03 +0000 (22:28 +0000)]
Merge "Mac host doesn't define ART_USE_FUTEXES."
Ian Rogers [Thu, 6 Nov 2014 22:26:29 +0000 (14:26 -0800)]
Mac host doesn't define ART_USE_FUTEXES.
Change-Id: Ic2c23d267cfd56db58754f45154436a085eeaa78
Chih-Hung Hsieh [Thu, 6 Nov 2014 20:18:47 +0000 (20:18 +0000)]
Merge "Move include of system headers outside namesapce."
Chih-Hung Hsieh [Thu, 6 Nov 2014 18:49:16 +0000 (10:49 -0800)]
Move include of system headers outside namesapce.
This happened to work with old system header files.
But with newer glibc 2.15 header files, typedef names
such as __u32 and __u64 are included into a namespace
and could not be used in other system header files.
BUG:
18275923
Change-Id: I7c61270d08a7b1c69cee55a6a23b00372f0f51c8
Calin Juravle [Thu, 6 Nov 2014 18:20:46 +0000 (18:20 +0000)]
Merge "Fixed BuildCheckedDiv signature"
Calin Juravle [Thu, 6 Nov 2014 18:19:23 +0000 (18:19 +0000)]
Fixed BuildCheckedDiv signature
The second_reg might actually be a constant.
Change-Id: I08cecc41e3d65ab73b41eba2aca702dea8e1ed95
Nicolas Geoffray [Thu, 6 Nov 2014 17:38:53 +0000 (17:38 +0000)]
Merge "421-large-frame fails on optimizing/arm64."
Nicolas Geoffray [Thu, 6 Nov 2014 17:37:50 +0000 (17:37 +0000)]
421-large-frame fails on optimizing/arm64.
It fails now that we support throw.
Change-Id: Ifc5011c0c41b63ff5d13f750c897cea11b845025
Roland Levillain [Thu, 6 Nov 2014 17:33:06 +0000 (17:33 +0000)]
Merge "Support float & double negation in the optimizing compiler."
Calin Juravle [Thu, 6 Nov 2014 17:28:21 +0000 (17:28 +0000)]
Merge "[optimizing compiler] Add DIV_INT_2ADDR"
Calin Juravle [Thu, 6 Nov 2014 17:09:03 +0000 (17:09 +0000)]
[optimizing compiler] Add DIV_INT_2ADDR
Change-Id: I38fc7e216f820d8ccc8bbf8b8e7a67b75fb9de87
Roland Levillain [Thu, 6 Nov 2014 17:19:08 +0000 (17:19 +0000)]
Merge "Add support for not-long on ARM64 in the optimizing compiler."
Nicolas Geoffray [Thu, 6 Nov 2014 16:57:00 +0000 (16:57 +0000)]
Merge "Implement try/catch/throw in optimizing."
Nicolas Geoffray [Wed, 5 Nov 2014 12:46:03 +0000 (12:46 +0000)]
Implement try/catch/throw in optimizing.
- We currently don't run optimizations in the presence of a try/catch.
- We therefore implement Quick's mapping table.
- Also fix a missing null check on array-length.
Change-Id: I6917dfcb868e75c1cf6eff32b7cbb60b6cfbd68f
Roland Levillain [Tue, 28 Oct 2014 17:30:07 +0000 (17:30 +0000)]
Support float & double negation in the optimizing compiler.
- Add support for the neg-float and neg-double Dex
instructions in the optimizing compiler.
- Generate x86, x86-64 and ARM (but not ARM64) code for
float and double HNeg nodes.
- Add related tests to test/415-optimizing-arith-neg.
Change-Id: I29739a86e13dbe6f64e191641d01637c867cba6c
Roland Levillain [Fri, 24 Oct 2014 17:09:09 +0000 (18:09 +0100)]
Add support for not-long on ARM64 in the optimizing compiler.
Change-Id: I3e98ff411ba358d92774def18a12daccdc4f558f
Andreas Gampe [Thu, 6 Nov 2014 16:22:29 +0000 (16:22 +0000)]
Merge "ART: Fix warnings in memcmp16 for arm32"
Andreas Gampe [Thu, 6 Nov 2014 07:49:43 +0000 (23:49 -0800)]
ART: Fix warnings in memcmp16 for arm32
Rewrite conditional infixes to silence the warnings. Use push and
pop for consistency with our other assembly files.
Change-Id: I3c059ff44b5242fa21c640457d36aaee62f8d59b
Nicolas Geoffray [Thu, 6 Nov 2014 16:02:48 +0000 (16:02 +0000)]
Merge "Fix failures after div support."
Nicolas Geoffray [Thu, 6 Nov 2014 15:59:38 +0000 (15:59 +0000)]
Fix failures after div support.
- We need to special case divide by -1 because of x86.
- Disable div test on arm64, which does not support div yet.
Change-Id: I07e137cb555a958b02a6c4070f296503b7e30bae
Calin Juravle [Thu, 6 Nov 2014 15:04:02 +0000 (15:04 +0000)]
Merge "Fix build."
Calin Juravle [Thu, 6 Nov 2014 15:03:23 +0000 (15:03 +0000)]
Fix build.
BuildCheckedDiv doesn't handle 12x instruction correctly.
Change-Id: I59571397cfb1b7ee89538e8e0b57725b863b0ee1
Calin Juravle [Thu, 6 Nov 2014 14:49:23 +0000 (14:49 +0000)]
Merge "[optimizing compiler] Add div-int and exception handling."
Calin Juravle [Tue, 4 Nov 2014 16:40:20 +0000 (16:40 +0000)]
[optimizing compiler] Add div-int and exception handling.
- for backends: arm, x86, x86_64
- fixed a register allocator bug: the request for a fixed register for
the first input was ignored if the output was kSameAsFirstInput
- added divide by zero exception
- more tests
- shuffle around some code in the builder to reduce the number of lines
of code for a single function.
Change-Id: Id3a515e02bfbc66cd9d16cb9746f7551bdab3d42
Roland Levillain [Thu, 6 Nov 2014 14:18:39 +0000 (14:18 +0000)]
Merge "Add more int-to-long tests for the optimizing compiler."
Nicolas Geoffray [Thu, 6 Nov 2014 13:50:29 +0000 (13:50 +0000)]
Merge "Don't use R4 for suspend check."
Roland Levillain [Thu, 6 Nov 2014 12:24:42 +0000 (12:24 +0000)]
Add more int-to-long tests for the optimizing compiler.
Exercise Java byte- and short-to-long conversions producing
int-to-long Dex instructions.
Change-Id: I371af3f1dfcfe5b8b1ef3b16747987da93ff133c
Nicolas Geoffray [Thu, 6 Nov 2014 12:00:54 +0000 (12:00 +0000)]
Don't use R4 for suspend check.
Change-Id: I57ccfaa527e2676f21339860b28955468a87adfe
Roland Levillain [Thu, 6 Nov 2014 11:32:47 +0000 (11:32 +0000)]
Merge "Fix ART build issues."
Roland Levillain [Thu, 6 Nov 2014 11:10:17 +0000 (11:10 +0000)]
Fix ART build issues.
- Use ATTRIBUTE_UNUSED to avoid a warning about an unused
argument in compiler/optimizing/nodes.h instead of
simply commenting it out.
- Disable run test 002-sleep on ARM64.
Change-Id: I96911904289b73611e0fc168e7b597a9a2df8141
Roland Levillain [Thu, 6 Nov 2014 10:39:07 +0000 (10:39 +0000)]
Merge "Support int-to-long conversions in the optimizing compiler."
Nicolas Geoffray [Thu, 6 Nov 2014 09:34:33 +0000 (09:34 +0000)]
Merge "Fix typo in test name."
Nicolas Geoffray [Thu, 6 Nov 2014 09:33:43 +0000 (09:33 +0000)]
Fix typo in test name.
Change-Id: Ib1cbb66fdae118358d7903e8455838e3955c19e6
Nicolas Geoffray [Thu, 6 Nov 2014 09:11:26 +0000 (09:11 +0000)]
Merge "Mark 703-floating-point-div as failing on optimizing/arm64."
Nicolas Geoffray [Thu, 6 Nov 2014 09:10:23 +0000 (09:10 +0000)]
Mark 703-floating-point-div as failing on optimizing/arm64.
Change-Id: Id778a0944e49158eadc9a1b4629dc2647139477e
Ian Rogers [Wed, 5 Nov 2014 23:10:54 +0000 (23:10 +0000)]
Merge "Don't enable ARM_R4_SUSPEND_FLAG."
Ian Rogers [Tue, 28 Oct 2014 01:48:49 +0000 (18:48 -0700)]
Don't enable ARM_R4_SUSPEND_FLAG.
Bug:
17953517
Change-Id: I4578f1ffbfc987d5d178c7586b6bb99882ed19bb
Ian Rogers [Wed, 5 Nov 2014 21:21:46 +0000 (21:21 +0000)]
Merge "Fix LoadValue{Wide} to free temp when reg classes are not matched"
Ian Rogers [Wed, 5 Nov 2014 19:39:10 +0000 (19:39 +0000)]
Merge "ARM: Strength reduction for floating-point division"
Ningsheng Jian [Thu, 23 Oct 2014 05:48:36 +0000 (13:48 +0800)]
ARM: Strength reduction for floating-point division
For floating-point division by power of two constants, generate
multiplication by the reciprocal instead.
Change-Id: I39c79eeb26b60cc754ad42045362b79498c755be
Ian Rogers [Wed, 5 Nov 2014 19:13:15 +0000 (19:13 +0000)]
Merge "X86 QBE: Mark kX86StartOfMethod as defining reg 0"
Vladimir Marko [Wed, 5 Nov 2014 16:55:17 +0000 (16:55 +0000)]
Merge "Clean up arena objects in Mir2Lir."
Roland Levillain [Wed, 5 Nov 2014 14:15:05 +0000 (14:15 +0000)]
Support int-to-long conversions in the optimizing compiler.
- Add support for the int-to-float Dex instruction in the
optimizing compiler.
- Add a HTypeConversion node type for control-flow graphs.
- Generate x86, x86-64 and ARM (but not ARM64) code for
int-to-float HTypeConversion nodes.
- Add a 64-bit "Move doubleword to quadword with
sign-extension" (MOVSXD) instruction to the x86-64
assembler.
- Add related tests to test/422-type-conversion.
Change-Id: Ieb8ec5380f9c411857119c79aa8d0728fd10f780
Vladimir Marko [Wed, 5 Nov 2014 14:54:34 +0000 (14:54 +0000)]
Clean up arena objects in Mir2Lir.
Change-Id: I93fca37be2ae100ddebf80b6ba7a561b187e8886
Nicolas Geoffray [Wed, 5 Nov 2014 12:39:13 +0000 (12:39 +0000)]
Merge "Fix RI testing."
Nicolas Geoffray [Wed, 5 Nov 2014 12:34:24 +0000 (12:34 +0000)]
Fix RI testing.
Change-Id: Ic0f40dfd75f4dd8cd1cd70933f76de94c482756d
Roland Levillain [Wed, 5 Nov 2014 12:08:30 +0000 (12:08 +0000)]
Merge "Fix store instructions to large frames in ARM opt. compiler."
Brian Carlstrom [Wed, 5 Nov 2014 07:21:11 +0000 (07:21 +0000)]
Merge "Fix dependency from phony targets to real files to remove need for m or mma"
Brian Carlstrom [Wed, 5 Nov 2014 07:21:09 +0000 (07:21 +0000)]
Merge "Restore run-test TIME_OUT feature"
Brian Carlstrom [Wed, 5 Nov 2014 07:07:57 +0000 (23:07 -0800)]
Fix dependency from phony targets to real files to remove need for m or mma
Change-Id: I37360fbe2fa3aea6cee14241ef13d5839f9532c9
Brian Carlstrom [Wed, 5 Nov 2014 06:31:35 +0000 (22:31 -0800)]
Restore run-test TIME_OUT feature
Added in
741c02c4027d374279954ce5542754c098055f24
Lost in
1a58b7f6f14a5ed9355e8e447cae25fb41467f09
Bug:
18248300
Change-Id: Ie5afdaf07d7b994e94decd928c6e0a28e49b4b78
Andreas Gampe [Wed, 5 Nov 2014 06:58:18 +0000 (06:58 +0000)]
Merge "ART: Fix some redundant declarations"
Andreas Gampe [Wed, 5 Nov 2014 06:26:32 +0000 (22:26 -0800)]
ART: Fix some redundant declarations
Refactor entrypoint initialization such that there is a large set
of common extern "C" declarations for quick entrypoints.
Change-Id: Iae8548e5f7ebbf51dc6c55c4283fa89437e18c98
Serguei Katkov [Wed, 29 Oct 2014 07:48:02 +0000 (13:48 +0600)]
Fix LoadValue{Wide} to free temp when reg classes are not matched
If the current register mapping does not match the required one we
are allocating a new temp and make a copy. After that we are clobbering
the old mapping of VR to physical register. However we can also free it
for future allocations as soon as it will not used more.
This is a fix of the bug I met. The reason of the dex2oat crash was that
GenInlinedMinMaxFP loaded two sources to fp registers. It appeared that
both of them were live in two pairs of core regs. As a result after
loading of them all 4 temps available for x86 platfrom are marked as in use.
As a result after an attempt to allocate new temp to load a constant
required by GenInlinedMinMaxFP register allocator reported that there is
no available temp registers.
Change-Id: I9233012e39de1e574761f3d9bd3cad80d743e522
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
Ian Rogers [Wed, 5 Nov 2014 05:30:41 +0000 (05:30 +0000)]
Merge "Add ATTRIBUTE_UNUSED to unused parameters."
Chih-Hung Hsieh [Tue, 4 Nov 2014 22:39:03 +0000 (14:39 -0800)]
Add ATTRIBUTE_UNUSED to unused parameters.
They are reported by Clang compiler.
BUG:
18244071
Change-Id: I3ebf7a9c324490adbf1135f21818c7ad83c83f3d
Ian Rogers [Wed, 5 Nov 2014 03:32:56 +0000 (03:32 +0000)]
Merge "Make thread dumping more tolerant of broken invariants during abort."
Andreas Gampe [Wed, 5 Nov 2014 02:42:56 +0000 (02:42 +0000)]
Merge "ART: More warnings"
Andreas Gampe [Tue, 4 Nov 2014 05:36:10 +0000 (21:36 -0800)]
ART: More warnings
Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,
and -Wunused-but-set-parameter for GCC builds.
Change-Id: I81bbdd762213444673c65d85edae594a523836e5
Ian Rogers [Wed, 5 Nov 2014 01:57:02 +0000 (17:57 -0800)]
Make thread dumping more tolerant of broken invariants during abort.
Change-Id: Ie1bc20debe72f2ea2bf4c1be50cd9877c823670a
Ian Rogers [Wed, 5 Nov 2014 00:49:27 +0000 (00:49 +0000)]
Merge "Add a test for SafeMath."
Ian Rogers [Wed, 5 Nov 2014 00:39:32 +0000 (16:39 -0800)]
Add a test for SafeMath.
Change-Id: I445cd168e6f22a4c12f954eb94e32bd28dba9501
Ian Rogers [Tue, 4 Nov 2014 23:36:57 +0000 (23:36 +0000)]
Merge "Fix unused parameters for the Mac."
Ian Rogers [Tue, 4 Nov 2014 23:33:55 +0000 (15:33 -0800)]
Fix unused parameters for the Mac.
Change-Id: I76086cc1f448d058de61a613078055d8f01ba4b3
Ian Rogers [Tue, 4 Nov 2014 23:13:47 +0000 (23:13 +0000)]
Merge "Fix build."
Ian Rogers [Tue, 4 Nov 2014 23:10:55 +0000 (15:10 -0800)]
Fix build.
Change-Id: I7c6657bdc31e57c144999d4a3f8c2836c3d90403
Ian Rogers [Tue, 4 Nov 2014 22:45:09 +0000 (22:45 +0000)]
Merge "Fix mac build."
Ian Rogers [Tue, 4 Nov 2014 22:43:18 +0000 (14:43 -0800)]
Fix mac build.
Change-Id: I228cdb0b25cd0f2c5e745a87a97aa8fd3c8a160a
Ian Rogers [Tue, 4 Nov 2014 22:18:08 +0000 (22:18 +0000)]
Merge "Don't define DISALLOW_COPY_AND_ASSIGN if already defined."
Ian Rogers [Tue, 4 Nov 2014 21:20:30 +0000 (13:20 -0800)]
Don't define DISALLOW_COPY_AND_ASSIGN if already defined.
Required by:
https://android-review.googlesource.com/#/c/113053/
Change-Id: I0226afffc738a4b7c162a0d467513a35d62dbfdc
Roland Levillain [Tue, 4 Nov 2014 17:43:11 +0000 (17:43 +0000)]
Fix store instructions to large frames in ARM opt. compiler.
When accessing a stack frame at a large offset, use an
additional core register (R5 or R6) as a temporary register
whenever IP contains the value to store (and thus cannot be
used by art::Thumb2Assembler::StoreToOffset as a temporary
register to compute the memory address where the value is
to be stored). The previous value of R5 (or R6) is saved
on the stack before the emission of the store instruction
and restored afterwards.
Change-Id: Ic5fd5ab2c09d8327dd1f0f241d40d2c397ce64cd
Nicolas Geoffray [Tue, 4 Nov 2014 13:46:22 +0000 (13:46 +0000)]
Merge "Try to fix mac build."
Nicolas Geoffray [Tue, 4 Nov 2014 13:03:29 +0000 (13:03 +0000)]
Try to fix mac build.
Change-Id: I6c7faa1c80bc7c250d14859d51c910d50b7fb562
Nicolas Geoffray [Tue, 4 Nov 2014 11:50:23 +0000 (11:50 +0000)]
Merge "New failure on optimizing/arm64 after CONST_CLASS support."
Nicolas Geoffray [Tue, 4 Nov 2014 11:49:17 +0000 (11:49 +0000)]
New failure on optimizing/arm64 after CONST_CLASS support.
Change-Id: I7bae21795bc038e98f17a903e5964feef0718a37
Nicolas Geoffray [Tue, 4 Nov 2014 11:23:47 +0000 (11:23 +0000)]
Merge "Implement CONST_CLASS in optimizing compiler."
Nicolas Geoffray [Mon, 3 Nov 2014 14:51:25 +0000 (14:51 +0000)]
Implement CONST_CLASS in optimizing compiler.
Change-Id: Ia8c8dfbef87cb2f7893bfb6e178466154eec9efd
Nicolas Geoffray [Tue, 4 Nov 2014 09:17:11 +0000 (09:17 +0000)]
Merge "miranda multidex test fails on optimizing/arm64."
Nicolas Geoffray [Tue, 4 Nov 2014 09:15:35 +0000 (09:15 +0000)]
miranda multidex test fails on optimizing/arm64.
Change-Id: I9c41f7aaeb77d2a50c177fdc71fa54503eeb612f
Andreas Gampe [Tue, 4 Nov 2014 08:45:07 +0000 (08:45 +0000)]
Merge "ART: Fix unused parameter warning on Mac"
Andreas Gampe [Tue, 4 Nov 2014 08:42:32 +0000 (00:42 -0800)]
ART: Fix unused parameter warning on Mac
Change-Id: Ibf462b90a44c41e2f450724be8cc934b00f17f41
Andreas Gampe [Tue, 4 Nov 2014 07:51:34 +0000 (07:51 +0000)]
Merge "ART: Replace COMPILE_ASSERT with static_assert (compiler)"
Andreas Gampe [Tue, 4 Nov 2014 07:49:16 +0000 (07:49 +0000)]
Merge "ART: Replace COMPILE_ASSERT with static_assert (runtime)"
Andreas Gampe [Tue, 4 Nov 2014 07:41:03 +0000 (23:41 -0800)]
ART: Replace COMPILE_ASSERT with static_assert (runtime)
Replace all occurrences of COMPILE_ASSERT in the runtime tree.
Change-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2
Andreas Gampe [Tue, 4 Nov 2014 06:57:30 +0000 (22:57 -0800)]
ART: Replace COMPILE_ASSERT with static_assert (compiler)
Replace all occurrences of COMPILE_ASSERT in the compiler tree.
Change-Id: Icc40a38c8bdeaaf7305ab3352a838a2cd7e7d840
Andreas Gampe [Tue, 4 Nov 2014 04:27:33 +0000 (04:27 +0000)]
Merge "ART: Fix unused parameters in libsigchain"
Andreas Gampe [Tue, 4 Nov 2014 04:25:24 +0000 (20:25 -0800)]
ART: Fix unused parameters in libsigchain
The sigchain dummy implementation does not use any parameters.
Change-Id: Icbb71677e5092cd5990a69ea3a62703c0747ae17
Ian Rogers [Tue, 4 Nov 2014 04:02:48 +0000 (04:02 +0000)]
Merge "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags."
Ian Rogers [Fri, 31 Oct 2014 07:33:20 +0000 (00:33 -0700)]
Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.
Fix associated errors about unused paramenters and implict sign conversions.
For sign conversion this was largely in the area of enums, so add ostream
operators for the effected enums and fix tools/generate-operator-out.py.
Tidy arena allocation code and arena allocated data types, rather than fixing
new and delete operators.
Remove dead code.
Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
Mingyao Yang [Tue, 4 Nov 2014 00:21:46 +0000 (00:21 +0000)]
Merge "Some improvement to reg alloc."
Mingyao Yang [Mon, 6 Oct 2014 23:47:28 +0000 (16:47 -0700)]
Some improvement to reg alloc.
Change-Id: If579a37791278500a7e5bc763f144c241f261920
Andreas Gampe [Mon, 3 Nov 2014 23:41:18 +0000 (23:41 +0000)]
Merge "ART: Add missing test dependency"
Andreas Gampe [Mon, 3 Nov 2014 23:36:53 +0000 (15:36 -0800)]
ART: Add missing test dependency
Change-Id: Ic37fd3b8885a9745e1efe4f42578d9ab090a201c
Jeff Hao [Mon, 3 Nov 2014 22:27:16 +0000 (22:27 +0000)]
Merge "Check null this pointer for direct methods in FindMethodFast."
Jeff Hao [Thu, 30 Oct 2014 00:24:25 +0000 (17:24 -0700)]
Check null this pointer for direct methods in FindMethodFast.
Also adds regression test 127-secondarydex.
Bug:
18150997
(cherry picked from commit
d2bee3dffa2f552512f47bca605ed857e3ae30ea)
Change-Id: I911dd7c92c51939504cfee5a3d18a835987b8388
Andreas Gampe [Mon, 3 Nov 2014 18:30:41 +0000 (18:30 +0000)]
Merge "ART: Add miranda checking"
Andreas Gampe [Mon, 3 Nov 2014 18:24:44 +0000 (18:24 +0000)]
Merge "ART: Discard generated image in a low-memory environment"
Andreas Gampe [Sat, 1 Nov 2014 01:12:30 +0000 (18:12 -0700)]
ART: Add miranda checking
Add a test for resolution of miranda methods across dex-files. See
CL 112688 and b/
18193682 for the code change.
Fix the test script to support no-verify again.
Weaken the dex cache check to a check whether the found method is a
miranda method. This will penalize miranda methods, as they will
always have to be resolved by name, but does not require the multi-step
load of the method's dex cache.
Bug:
18193682
Change-Id: I1dae2a9ec0985dc8625acd7dd5686a5d3cdc8888
Mathieu Chartier [Mon, 3 Nov 2014 18:18:40 +0000 (18:18 +0000)]
Merge "Add image strings to intern table"