OSDN Git Service
Mathieu Chartier [Fri, 1 May 2015 20:19:14 +0000 (20:19 +0000)]
Merge "Change invalid root from LOG(ERROR) to LOG(INTERNAL_FATAL)"
Mathieu Chartier [Fri, 1 May 2015 20:00:23 +0000 (13:00 -0700)]
Change invalid root from LOG(ERROR) to LOG(INTERNAL_FATAL)
INTERNAL_FATAL is more likely to remain in bug reports.
Bug:
20736048
Change-Id: I518f079d8d1839e22b3595e807730edf36318f1d
Nicolas Geoffray [Fri, 1 May 2015 09:10:56 +0000 (09:10 +0000)]
Merge "Update the remaining input index of phis after deleting an input."
Nicolas Geoffray [Mon, 27 Apr 2015 23:52:43 +0000 (00:52 +0100)]
Update the remaining input index of phis after deleting an input.
bug:
20715803
bug:
20690906
Change-Id: Iaf08f0c30d629e766be2b04815dc3e38b6e7ff35
David Srbecky [Thu, 30 Apr 2015 16:08:32 +0000 (16:08 +0000)]
Merge "Move .eh_frame to the end of ELF file."
David Srbecky [Tue, 28 Apr 2015 18:43:56 +0000 (19:43 +0100)]
Move .eh_frame to the end of ELF file.
Move .eh_frame to the end together with other debug sections.
This should make it easier to remove it using standard strip tools.
Bug:
20556771
Change-Id: I8303ccb053aee50d53fb193819d345c91f1e5b75
David Srbecky [Thu, 30 Apr 2015 16:07:16 +0000 (16:07 +0000)]
Merge "Major refactoring of ElfBuilder."
David Srbecky [Thu, 30 Apr 2015 16:07:06 +0000 (16:07 +0000)]
Merge "Minor refactoring of ElfBuilder."
David Srbecky [Wed, 22 Apr 2015 18:40:27 +0000 (19:40 +0100)]
Major refactoring of ElfBuilder.
Simplify ElfBuilder by removing duplicated or redundant code.
Many of the repeated code patterns were replaced by just
looping over the list of all sections.
Methods Init() and Write() have been merged into one.
The split between those was rather arbitrary, but it was there
for a reason. It allowed creation of raw sections between
the calls which may have depended on layout decisions done in
Init(), but not in Write() (e.g. knowing of offset of .text).
This has been replaced by more generic solution.
All sections are asked about their size first and complete
file layout is calculated. Then the sections are asked to
write their content (potentially using the layout information).
This should be pure refactoring CL - the compiler should
produce bit for bit identical output as before.
Change-Id: I281d13d469801bd8288b36b360d200d98a3e92d7
Nicolas Geoffray [Thu, 30 Apr 2015 11:16:06 +0000 (11:16 +0000)]
Merge "Revert "GVN final fields even with side effects.""
Nicolas Geoffray [Thu, 30 Apr 2015 11:15:40 +0000 (11:15 +0000)]
Revert "GVN final fields even with side effects."
This reverts commit
781733632637db98d79dfffad72bf063be3259be.
Change-Id: Id7c4591f6b8190921852044b278d11627457c570
Nicolas Geoffray [Thu, 30 Apr 2015 10:21:19 +0000 (10:21 +0000)]
Merge "GVN final fields even with side effects."
Nicolas Geoffray [Wed, 29 Apr 2015 15:46:27 +0000 (16:46 +0100)]
GVN final fields even with side effects.
Two accesses of a final field can be GVN'ed even if there are
side effects between them.
Change-Id: I04495ae83c7858f4216b083ad1c29851954320ad
Sebastien Hertz [Thu, 30 Apr 2015 07:18:07 +0000 (07:18 +0000)]
Merge "ART: Allow oat files with duplicates classes in corner case"
Sebastien Hertz [Thu, 30 Apr 2015 06:53:35 +0000 (06:53 +0000)]
Merge "Fix missing transaction abort error message"
Andreas Gampe [Thu, 30 Apr 2015 03:47:16 +0000 (20:47 -0700)]
ART: Allow oat files with duplicates classes in corner case
When the oat file is actually an odex file, that is, a preopted
/system app, then it is impossible to fall back to the original
APK, as that has been stripped.
When it looks like it will be impossible to successfully open the
original dex location, grudgingly allow to open the found oat file,
even if it has duplicate classes, but warn accordingly.
Bug:
20697582
Change-Id: I1dd459563d977a2e77806eacd03e49334d5b1f14
Jeff Hao [Wed, 29 Apr 2015 23:03:46 +0000 (23:03 +0000)]
Merge "Restore interpreter check during DoCall removed by string init."
Jeff Hao [Wed, 29 Apr 2015 22:58:17 +0000 (15:58 -0700)]
Restore interpreter check during DoCall removed by string init.
Also reorder test in verifier to check for string_init first.
Change-Id: I585ef3f5890819a3e233236ea85b51a03918f5dc
Mathieu Chartier [Wed, 29 Apr 2015 17:37:47 +0000 (17:37 +0000)]
Merge "Only print IRT remove local warning if CheckJNI is enabled"
Mathieu Chartier [Wed, 29 Apr 2015 16:57:48 +0000 (09:57 -0700)]
Only print IRT remove local warning if CheckJNI is enabled
Less spammy.
Bug:
17405090
Change-Id: Ib78d0d7bc31a88182cb9d85ddba9b469bd50324b
Nicolas Geoffray [Wed, 29 Apr 2015 17:10:08 +0000 (17:10 +0000)]
Merge "Add synthesize uses at back edge."
Nicolas Geoffray [Tue, 21 Apr 2015 13:28:41 +0000 (14:28 +0100)]
Add synthesize uses at back edge.
This reduces the cost of linearizing the graph (hence removing
the notion of back edge). Since linear scan allocates/spills registers
based on next use, adding a use at a back edge ensures we do count
for loop uses.
Change-Id: Idaa882cb120edbdd08ca6bff142d326a8245bd14
David Brazdil [Wed, 29 Apr 2015 16:42:48 +0000 (16:42 +0000)]
Merge "ART: Fix loop information after dead code elimination"
David Brazdil [Wed, 29 Apr 2015 16:16:07 +0000 (17:16 +0100)]
ART: Fix loop information after dead code elimination
Compilation failed when only some blocks of a loop were removed during
dead code elimination.
Bug:
20680703
Change-Id: If31025169ca493f0d7f7f2788576e98d05f03394
Roland Levillain [Wed, 29 Apr 2015 15:30:17 +0000 (15:30 +0000)]
Merge "Factor MoveArguments methods in Optimizing's intrinsics handlers."
Narayan Kamath [Wed, 29 Apr 2015 14:31:27 +0000 (14:31 +0000)]
Merge "Add dependency on libbase."
Narayan Kamath [Tue, 28 Apr 2015 08:56:28 +0000 (09:56 +0100)]
Add dependency on libbase.
Used by the static libziparchive dependency on target.
Change-Id: Ib88dd67941f0679682bcae01346277ffe8d6df9b
Roland Levillain [Tue, 28 Apr 2015 14:50:20 +0000 (15:50 +0100)]
Factor MoveArguments methods in Optimizing's intrinsics handlers.
Also add a precondition similar to the one present in code
generators, regarding static invoke related explicit clinit
check elimination in non-baseline compilations.
Change-Id: I26f4dcb5d02824d7556f90b4b0c85b08b737fa53
Sebastien Hertz [Tue, 28 Apr 2015 10:31:41 +0000 (12:31 +0200)]
Fix missing transaction abort error message
Change-Id: I5157def06d385c082f9fdd4714e20bead9e707e8
Roland Levillain [Wed, 29 Apr 2015 13:37:57 +0000 (13:37 +0000)]
Merge "Refactor InvokeDexCallingConventionVisitor in Optimizing."
Roland Levillain [Tue, 28 Apr 2015 14:48:45 +0000 (15:48 +0100)]
Refactor InvokeDexCallingConventionVisitor in Optimizing.
Change-Id: I7ede0f59d5109644887bf5d39201d4e1bf043f34
Vladimir Marko [Wed, 29 Apr 2015 11:56:55 +0000 (11:56 +0000)]
Merge "Fix for incorrect encode and parse of PEXTRW instruction"
Roland Levillain [Wed, 29 Apr 2015 11:12:59 +0000 (11:12 +0000)]
Merge "Revert "Revert "Revert "[optimizing] Improve x86 shifts""""
Roland Levillain [Wed, 29 Apr 2015 11:12:33 +0000 (11:12 +0000)]
Revert "Revert "Revert "[optimizing] Improve x86 shifts"""
This reverts commit
9b95a057ee20e4b1ca2e9c663726482172dc9ba3.
Reverting this CL as it breaks libcore tests:
org.apache.harmony.tests.java.lang.DoubleTest#test_compare
junit.framework.AssertionFailedError: compare() -0.0 should be less 0.0
at junit.framework.Assert.assertTrue(Assert.java:140)
at org.apache.harmony.tests.java.lang.DoubleTest.test_compare(DoubleTest.java:258)
org.apache.harmony.tests.java.lang.DoubleTest#test_compare FAIL (EXEC_FAILED)
org.apache.harmony.tests.java.lang.DoubleTest#test_compareToLjava_lang_Double
junit.framework.AssertionFailedError: Assert 2: compare() -0.0 should be less 0.0
at junit.framework.Assert.assertTrue(Assert.java:140)
at org.apache.harmony.tests.java.lang.DoubleTest.test_compareToLjava_lang_Double(DoubleTest.java:1320)
org.apache.harmony.tests.java.lang.DoubleTest#test_compareToLjava_lang_Double FAIL (EXEC_FAILED)
Change-Id: I10f0ec8cc9495cc225fef1940b3f1a9fe87d996f
Nicolas Geoffray [Wed, 29 Apr 2015 10:34:20 +0000 (10:34 +0000)]
Merge "Bugs have been fixed, so run the tests."
Roland Levillain [Wed, 29 Apr 2015 10:23:07 +0000 (10:23 +0000)]
Merge "Add InsertInstructionAfter in HBasicBlock."
Roland Levillain [Wed, 29 Apr 2015 10:18:40 +0000 (10:18 +0000)]
Merge "Revert "Revert "[optimizing] Improve x86 shifts"""
Nicolas Geoffray [Wed, 29 Apr 2015 09:57:50 +0000 (10:57 +0100)]
Bugs have been fixed, so run the tests.
Change-Id: I6769cf244d246160b65d6dd4e4df0efb0aa8a7e5
Roland Levillain [Wed, 29 Apr 2015 09:22:37 +0000 (10:22 +0100)]
Revert "Revert "[optimizing] Improve x86 shifts""
This reverts commit
f9aac1e9f442c2486cd54f045d43e15791601205.
Don't use Location::Any() for the first input if the output is
Location::SameAsFirstInput().
Change-Id: I400834052b114abf0d616da1b4b6506f7bba10ab
Andreas Gampe [Wed, 29 Apr 2015 06:30:40 +0000 (06:30 +0000)]
Merge "ART: Move dex2oat watchdog output to LogLine"
Andreas Gampe [Wed, 29 Apr 2015 06:16:03 +0000 (23:16 -0700)]
ART: Move dex2oat watchdog output to LogLine
The fprintf isn't visible on device, as it doesn't end up in the
logcat.
Also increase the watchdog timeout to 10 minutes.
Bug:
20658562
Change-Id: I1fec8dae25f9282f72e762bda934fceb948bbd5f
nikolay serdjuk [Mon, 27 Apr 2015 11:52:57 +0000 (17:52 +0600)]
Fix for incorrect encode and parse of PEXTRW instruction
The instruction PEXTRW encoded by sequence 66 0F 3A 15
was incorrectly encoded in compiler table and incorrectly
parsed by disassembler.
Change-Id: Ib4d4db923cb15a76e74f13f6b5514cb0d1cbe164
Signed-off-by: nikolay serdjuk <nikolay.y.serdjuk@intel.com>
Andreas Gampe [Wed, 29 Apr 2015 05:10:04 +0000 (05:10 +0000)]
Merge "ART: Remove multidex limit"
Andreas Gampe [Tue, 28 Apr 2015 03:01:52 +0000 (20:01 -0700)]
ART: Remove multidex limit
Remove the arbitrary multidex limit. If users want to use many
files, allow them, but print a warning after a considerable amount.
Bug:
20071800
(cherry picked from commit
32c26b8f9b995250479c185172f4ffd881a59996)
Change-Id: Ic51c96b84042f769a7d33ec53fe587b68cd69df4
Mathieu Chartier [Tue, 28 Apr 2015 21:06:33 +0000 (21:06 +0000)]
Merge "Fix possible null deference in Throwable::Dump"
Mathieu Chartier [Tue, 28 Apr 2015 20:53:02 +0000 (13:53 -0700)]
Fix possible null deference in Throwable::Dump
Bug:
20640601
Change-Id: Ibd6081ed9ea16f320e505e06e690b8eddb1228ef
Jeff Hao [Tue, 28 Apr 2015 19:15:05 +0000 (19:15 +0000)]
Merge "Change ddmc run-test to make new objects instead of strings."
Jeff Hao [Tue, 28 Apr 2015 19:11:22 +0000 (12:11 -0700)]
Change ddmc run-test to make new objects instead of strings.
Before, the test was creating new strings until overflowing allocations,
which was half string objects and half character arrays. Now, it
allocates all strings with the character data, which is larger than
before, causing the test to run out of memory. Allocating only objects
prevents the test from running out of memory.
Change-Id: Icf3f0fd2ae847e76a9b8d5dfb762be92de16aaa3
Vladimir Marko [Tue, 28 Apr 2015 18:35:17 +0000 (18:35 +0000)]
Merge "Quick: Fix crash on fall-through out of method code."
Calin Juravle [Tue, 7 Apr 2015 18:43:36 +0000 (19:43 +0100)]
Quick: Fix crash on fall-through out of method code.
Fix Quick crash when the last insn has a fall-through out of
the method's code. Allow creation of an out-of-method block
and at the end of MIRGraph::InlineMethod() check if that
block is reachable. If it is, punt to interpreter. Add tests
for unreachable if-lt and packed-switch as the last insn.
Also fix MIRGraph::ProcessCanSwitch() to treat the offset to
the data as signed. Jumping over the data with a goto and
using it from a switch further down is valid. This was also
crashing (presumably only on 64-bit dex2oat).
Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the
bug report.
Bug:
19988134
Change-Id: I627f4137f61901897bfb9a5252741c6ded3a1adb
Dan Albert [Tue, 28 Apr 2015 18:11:38 +0000 (18:11 +0000)]
Merge "Prevent undefined behavior in RosAlloc."
Dan Albert [Thu, 16 Apr 2015 18:50:30 +0000 (11:50 -0700)]
Prevent undefined behavior in RosAlloc.
In cases where remain == 0, the 32-bit value would be left shifted
32-bits, which is undefined behavior.
Change-Id: I6277279341b168536f928ce87375c395a1aa865c
Mathieu Chartier [Tue, 28 Apr 2015 17:47:45 +0000 (17:47 +0000)]
Merge "Fix some compaction bugs in string allocation"
Mathieu Chartier [Tue, 28 Apr 2015 17:01:28 +0000 (10:01 -0700)]
Fix some compaction bugs in string allocation
Change-Id: I2b8499c60de7690e1012d71bccba4ecd589da9af
David Srbecky [Tue, 28 Apr 2015 16:54:52 +0000 (17:54 +0100)]
Minor refactoring of ElfBuilder.
* Nest section builder classes within the main builder
class to reduce verbosity caused by templates.
* Move .eh_frame and .eh_frame_hdr section headers earlier
so that the section headers are sorted by file offset.
* Do not emit PT_NULL header if .eh_frame_hdr is missing.
None of these changes should have any material impact.
This CL just prepares ground for the following CL.
Change-Id: I56f9825892adb01d413a18ca10cb5c805cb8cd78
Sebastien Hertz [Tue, 28 Apr 2015 14:33:00 +0000 (14:33 +0000)]
Merge "Fix constructor access check through reflection"
Vladimir Marko [Tue, 28 Apr 2015 13:31:38 +0000 (13:31 +0000)]
Merge "ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points."
Sebastien Hertz [Tue, 28 Apr 2015 13:00:41 +0000 (15:00 +0200)]
Fix constructor access check through reflection
We must not throw IllegalAccessException if the constructor has been
made accessible by a previous call to Constructor.setAccessible, even
if the caller cannot access the constructor.
Bug:
20639158
Change-Id: I9a34f05cdbb8825ad88b42223743690228e3f03e
Vladimir Marko [Tue, 28 Apr 2015 13:14:58 +0000 (14:14 +0100)]
ART: Add FOUR_ARG_DOWNCALL macro for MIPS64 entry points.
Missing from
https://android-review.googlesource.com/79174
Change-Id: If182b73824edfd4639f645612b2f7b67c1f31bef
Vladimir Marko [Tue, 28 Apr 2015 12:10:30 +0000 (12:10 +0000)]
Merge "ART: Fix MIPS entrypoint downcall macros."
Vladimir Marko [Tue, 28 Apr 2015 11:37:09 +0000 (12:37 +0100)]
ART: Fix MIPS entrypoint downcall macros.
Broken by not updating the MIPS assembly after rebase of
https://android-review.googlesource.com/79174
Change-Id: I6258c254c0652e92357d306640c461d9523da227
Vladimir Marko [Tue, 28 Apr 2015 10:36:38 +0000 (10:36 +0000)]
Merge "Quick: Avoid unnecessary GVN work in release builds."
Roland Levillain [Tue, 28 Apr 2015 10:31:38 +0000 (10:31 +0000)]
Merge "Have HInvoke instructions know their number of actual arguments."
Nicolas Geoffray [Tue, 28 Apr 2015 10:29:17 +0000 (10:29 +0000)]
Merge "Revert "Revert "[optimizing] Replace FP divide by power of 2"""
Roland Levillain [Tue, 28 Apr 2015 10:00:54 +0000 (11:00 +0100)]
Have HInvoke instructions know their number of actual arguments.
Add an art::HInvoke::GetNumberOfArguments routine so that
art::HInvoke and its subclasses can return the number of
actual arguments of the called method. Use it in code
generators and intrinsics handlers.
Consequently, no longer remove a clinit check as last input
of a static invoke if it is still present during baseline
code generation, but ensure that static invokes have no such
check as last input in optimized compilations.
Change-Id: Iaf9e07d1057a3b15b83d9638538c02b70211e476
Jeff Hao [Tue, 28 Apr 2015 03:57:53 +0000 (03:57 +0000)]
Merge "Fix java_lang_Class newInstance for strings; also quick entrypoints."
Jeff Hao [Tue, 28 Apr 2015 03:54:07 +0000 (20:54 -0700)]
Fix java_lang_Class newInstance for strings; also quick entrypoints.
Change-Id: I35fd23c5a9051e1ffda0ecc2cbafb5d318c7b5e6
Andreas Gampe [Tue, 28 Apr 2015 02:42:25 +0000 (02:42 +0000)]
Merge "ART: Fix constructor access checking"
Andreas Gampe [Tue, 28 Apr 2015 00:26:37 +0000 (17:26 -0700)]
ART: Fix constructor access checking
Constructor access must be checked.
(cherry picked from commit
0dd76cd3f09f495a1b9a0e4f8712c09ff885c6fd)
Bug:
20639158
Change-Id: I3c586e9572a748d208bea43aa2349c3ef52a2ee5
Jeff Hao [Tue, 28 Apr 2015 02:04:09 +0000 (02:04 +0000)]
Merge "Replace String CharArray with internal uint16_t array."
Jeff Hao [Wed, 15 Jan 2014 21:49:50 +0000 (13:49 -0800)]
Replace String CharArray with internal uint16_t array.
Summary of high level changes:
- Adds compiler inliner support to identify string init methods
- Adds compiler support (quick & optimizing) with new invoke code path
that calls method off the thread pointer
- Adds thread entrypoints for all string init methods
- Adds map to verifier to log when receiver of string init has been
copied to other registers. used by compiler and interpreter
Change-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01
Hiroshi Yamauchi [Tue, 28 Apr 2015 01:07:17 +0000 (01:07 +0000)]
Merge "Switch the default read barrier type to a Baker one."
Hiroshi Yamauchi [Tue, 28 Apr 2015 00:58:51 +0000 (17:58 -0700)]
Switch the default read barrier type to a Baker one.
For automated testing.
Bug:
12687968
Change-Id: I831d6e45e4729f0dd3cf178d02af511a32cc9777
Nicolas Geoffray [Mon, 27 Apr 2015 08:53:46 +0000 (08:53 +0000)]
Revert "Revert "[optimizing] Replace FP divide by power of 2""
This reverts commit
067cae2c86627d2edcf01b918ee601774bc76aeb.
Change-Id: Iaaa8772500ea7d3dce6ae0829dc0dc3bbc9c14ca
Christopher Ferris [Mon, 27 Apr 2015 19:05:36 +0000 (19:05 +0000)]
Merge "Fix mismatched malloc/free delete/new."
Christopher Ferris [Sat, 25 Apr 2015 00:23:53 +0000 (17:23 -0700)]
Fix mismatched malloc/free delete/new.
Modify the monitor code to override the delete operator. The problem
is the new operator is overloaded to return a pointer returned by
posix_memalign, but then it's freed with a delete, not a free call.
Also, fix the debugger code to use the [] for a std::unique_ptr to
match how the value is actually allocated.
Both problems found by ASAN.
Bug:
18202869
Change-Id: I2f3a2c02a7f35399b7ba6717b08a035089fab00d
Hiroshi Yamauchi [Mon, 27 Apr 2015 18:10:18 +0000 (18:10 +0000)]
Merge "Use the lock word bits for Baker-style read barrier."
Mathieu Chartier [Mon, 27 Apr 2015 18:01:13 +0000 (18:01 +0000)]
Merge "Fix clean-oat"
Mathieu Chartier [Mon, 27 Apr 2015 17:46:39 +0000 (10:46 -0700)]
Fix clean-oat
Change to use adb shell sh -c <cmd>.
Also fixed other phony targets, deleted smart mode and added
verify-at-runtime mode.
Change-Id: I562117774eaa153e66b46d6f173fe993931018b7
Nicolas Geoffray [Mon, 27 Apr 2015 17:12:10 +0000 (17:12 +0000)]
Merge "Dissociate uses with environment uses."
Vladimir Marko [Mon, 27 Apr 2015 16:53:25 +0000 (16:53 +0000)]
Merge "Quick: Rely on inferred types in GVN/LVN/DCE."
Nicolas Geoffray [Mon, 27 Apr 2015 15:58:06 +0000 (16:58 +0100)]
Dissociate uses with environment uses.
They are most of the times in the way when iterating. They
also complicate the logic of (future) back edge uses.
Change-Id: I152595d9913073fe901b267ca623fa0fe7432484
David Brazdil [Mon, 27 Apr 2015 16:02:02 +0000 (16:02 +0000)]
Merge "ART: Simplify Ifs with BooleanNot condition"
David Brazdil [Mon, 27 Apr 2015 12:54:09 +0000 (13:54 +0100)]
ART: Simplify Ifs with BooleanNot condition
If statements with negated condition can be simplified by removing the
negation and swapping the true and false branches.
Change-Id: I197afbc79fb7344d73b7b85d3611e7ca2519717f
Vladimir Marko [Sat, 25 Apr 2015 16:00:45 +0000 (17:00 +0100)]
Quick: Avoid unnecessary GVN work in release builds.
In GVN's post-processing phase, compare LVNs only in debug
builds as they should be equal anyway.
Remove the Gate() from GVN cleanup pass and remove the
DCHECK() from MIRGraph::GlobalValueNumberingCleanup()
to make it a no-op if the GVN didn't run.
Bug:
16398693
Change-Id: Ia4f1e7e3ecf12d0305966c86e0e7dbae61dab0b7
Nicolas Geoffray [Mon, 27 Apr 2015 14:12:24 +0000 (14:12 +0000)]
Merge "Add support for caching float and double constants."
Nicolas Geoffray [Mon, 27 Apr 2015 08:53:46 +0000 (08:53 +0000)]
Add support for caching float and double constants.
Change-Id: Ib5205bad1006bc5e3c9cc86bc82a6b4b1ce9bef9
David Brazdil [Mon, 27 Apr 2015 12:42:59 +0000 (12:42 +0000)]
Merge "ART: Fix removing a Phi with RemoveInstruction"
David Brazdil [Mon, 27 Apr 2015 12:28:57 +0000 (13:28 +0100)]
ART: Fix removing a Phi with RemoveInstruction
Boolean simplifier might attempt to remove a Phi from the Instruction
list.
Change-Id: I698cc616549bd88dac96395cb2e5d09b5433d157
Guillaume "Vermeille" Sanchez [Fri, 24 Apr 2015 15:36:52 +0000 (16:36 +0100)]
Add InsertInstructionAfter in HBasicBlock.
Change-Id: I56e4e6edb39d1aab747877b7e517e94f0393f296
Vladimir Marko [Fri, 24 Apr 2015 18:03:51 +0000 (19:03 +0100)]
Quick: Rely on inferred types in GVN/LVN/DCE.
Fix LVN::GetEndingVregValueNumberImpl() to check whether
the requested wideness matches the SSA register type as
recorded in MIRGraph::reg_location_.
Add DCHECKs that the wideness matches when getting/setting
sreg values, update Phi handling in LVN/DCE to use the type
from MIRGraph::reg_location_ instead of determining it from
the sreg value maps which would now trigger the DCHECKs.
Update tests to initialize MIRGraph::reg_location_.
Reenable DCE.
Bug:
20572509
Change-Id: I1a4d4e32cd57807ca8b56d2f3ed5e1288660b82e
Mingyao Yang [Mon, 27 Apr 2015 01:41:58 +0000 (01:41 +0000)]
Merge "BCE: don't add deoptimization if the loop has early exit."
Mingyao Yang [Mon, 27 Apr 2015 01:15:30 +0000 (18:15 -0700)]
BCE: don't add deoptimization if the loop has early exit.
Also make the way to detect loop_body_successor to be
more accurate.
Change-Id: I29680f93396383c478a8f40ad28735e4f3f07c1b
Mingyao Yang [Sun, 26 Apr 2015 18:23:01 +0000 (18:23 +0000)]
Merge "Deoptimization-based BCE for unknown loop bounds."
Mingyao Yang [Mon, 13 Apr 2015 23:46:28 +0000 (16:46 -0700)]
Deoptimization-based BCE for unknown loop bounds.
For loop like:
for (int i = start; i < end; i++) {
array[i] = 1;
}
We add the following to the loop pre-header:
if (start < 0) deoptimize();
if (end > array.length) deoptimize();
Then we can eliminate bounds-check of array[i] inside the loop.
We also take care of indexing with induction variable plus some offsets,
like array[i - 1]/array[i + 1] inside the loop, and adjust the condition
for deoptimization accordingly.
Change-Id: I9e24c6b5e134ff95eff5b5605ff8f95d6546616f
Nicolas Geoffray [Sun, 26 Apr 2015 16:43:18 +0000 (16:43 +0000)]
Merge "Revert "[optimizing] Replace FP divide by power of 2""
Nicolas Geoffray [Sun, 26 Apr 2015 16:43:00 +0000 (16:43 +0000)]
Revert "[optimizing] Replace FP divide by power of 2"
Fails compiling docs.
This reverts commit
b0bd8915cb257cdaf46ba663c450a6543bca75af.
Change-Id: I47d32525c83a73118e2163eb58c68bbb7a28bb38
Nicolas Geoffray [Sun, 26 Apr 2015 15:05:28 +0000 (15:05 +0000)]
Merge "[optimizing] Replace FP divide by power of 2"
Andreas Gampe [Sun, 26 Apr 2015 00:41:53 +0000 (00:41 +0000)]
Merge "ART: Fix Trace types, check minimum buf size"
Andreas Gampe [Sun, 26 Apr 2015 00:39:03 +0000 (00:39 +0000)]
Merge "ART: Fix addpd opcode, add Quick x86 assembler test"