OSDN Git Service
Vladimir Marko [Mon, 24 Nov 2014 13:42:34 +0000 (13:42 +0000)]
Merge "ART: Add div-zero check elimination to LVN/GVN"
Vladimir Marko [Mon, 24 Nov 2014 12:39:45 +0000 (12:39 +0000)]
Merge "ART: Fix NullCheckElimination, BBCombine, and SplitBlock"
Vladimir Marko [Mon, 24 Nov 2014 11:05:33 +0000 (11:05 +0000)]
Merge "Rewrite GVN's field id and field type handling."
Andreas Gampe [Mon, 24 Nov 2014 08:10:29 +0000 (08:10 +0000)]
Merge "ART: ELF symbol table lookup is fixed"
Yevgeny Rouban [Mon, 24 Nov 2014 07:40:56 +0000 (13:40 +0600)]
ART: ELF symbol table lookup is fixed
ELF loader could not find some symbols in the OAT's symbol table
(e.g. oatdata, oatexec).
There was a bug in the symbol hash table lookup: if a valid index of
a chain got greater or equal than the number of hash buckets then
the chain was cut off.
The fix is to compare the chain index with the chains array length
rather than with the number of buckets.
Change-Id: I20940957c3045913fd426031a51314d4f87ac1bd
Signed-off-by: Yevgeny Rouban <yevgeny.y.rouban@intel.com>
Ian Rogers [Mon, 24 Nov 2014 04:10:10 +0000 (04:10 +0000)]
Merge "Increase run-test output on error."
Ian Rogers [Mon, 24 Nov 2014 04:07:39 +0000 (20:07 -0800)]
Increase run-test output on error.
On the host with many cores its possible for the message of an abort to be lost
due to the amount of debug output.
Bug:
18469797
Change-Id: Ibf210fc113166b8cc06ee9aed206780c981d236c
Ian Rogers [Sat, 22 Nov 2014 06:58:49 +0000 (06:58 +0000)]
Merge "Avoid some recursive aborting."
Ian Rogers [Sat, 22 Nov 2014 06:52:16 +0000 (22:52 -0800)]
Avoid some recursive aborting.
Bug:
18469797
Change-Id: Ic1889a605a041bdec679ff54f8dce3842d85f2e1
Andreas Gampe [Sat, 22 Nov 2014 04:35:42 +0000 (04:35 +0000)]
Merge "ART: Wrap AllocThreadUnsafe in Valgrind wrapper"
Andreas Gampe [Sat, 22 Nov 2014 03:45:53 +0000 (19:45 -0800)]
ART: Wrap AllocThreadUnsafe in Valgrind wrapper
This needs to be wrapped as it is being used during compaction.
Bug:
18481268
Change-Id: I85ecccc7de8be8eb70a5cb0420817583be9b7999
Ian Rogers [Sat, 22 Nov 2014 02:23:05 +0000 (02:23 +0000)]
Merge "Fix UnimplementedEntryPoint initialziation."
Razvan A Lupusoru [Thu, 30 Oct 2014 01:42:27 +0000 (18:42 -0700)]
ART: Fix NullCheckElimination, BBCombine, and SplitBlock
NullCheckElimination had one issue and one assumption that could be
broken:
-It ignored that compiler temps may hold references.
-Assumed there are no phi nodes even though algorithm can be run even
after phi nodes are inserted.
BBCombine also had issue in that it did not properly maintain the
instruction links. The logic has been updated to use utility methods.
SplitBlock has an issue with being called after extended instructions
are inserted. Namely, in the case in question, it was called after
SpecialMethodInliner was through and although it was doing semantically
correct thing, it was hitting dcheck due to the kMirOpNullCheck.
Change-Id: Id5863ddb0762064e74bf1d9173b8db5cb47cf3b9
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Ian Rogers [Sat, 22 Nov 2014 02:13:20 +0000 (02:13 +0000)]
Merge "Fixed ArtMethod::GetQuickFrameInfo() for proxy methods"
Ian Rogers [Sat, 22 Nov 2014 01:32:30 +0000 (01:32 +0000)]
Merge "Add JNI trampoline for mips32."
Razvan A Lupusoru [Fri, 14 Nov 2014 22:36:55 +0000 (14:36 -0800)]
ART: Add div-zero check elimination to LVN/GVN
GVN has been updated to also consider div/rem zero check elimination.
This means that whenever a divisor is used in two sequential divisions,
the second division will surely not throw exception.
The algorithm has been updated to work on global level by considering
splits and merges. Obviously, if "div_zero" checked on one path but
not the other, at merge point consider that division has not been
eliminated.
One big deficiency of this algorithm is that it does not consider
literals in the divisor. Namely, in cases where the operand is a literal
or a constant (literal created by another bytecode), it does not mark as
divide by zero checked. However, in reality this is not an issue
because none of the backends generate the divide by zero check when
the constant value is known.
Issue: CAR-868
Category: device enablement
Domain: AOSP.ART-ME
Origin: internal
Upstream-Candidate: yes
Change-Id: I617569055c73a45e13e2a83392b99b48f4e33362
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Ian Rogers [Sat, 22 Nov 2014 00:57:04 +0000 (00:57 +0000)]
Merge "Fix possible array access issue"
Vladimir [Mon, 13 Oct 2014 06:41:38 +0000 (13:41 +0700)]
Fix possible array access issue
The issue with possible array access in the DisassembleExtendedInstr
method should be fixed. The input opcode should be extended one.
Additional check for it was added.
Also additional CHECK for memory allocation should be added.
Change-Id: If114572a5bc99587d5effd588e7bd955c16d8318
Signed-off-by: Vladimir <vladimir.a.ivanov@intel.com>
Ian Rogers [Sat, 22 Nov 2014 00:45:10 +0000 (00:45 +0000)]
Merge "ART: Fix crash with unreachable void check-cast"
Ian Rogers [Sat, 22 Nov 2014 00:23:11 +0000 (00:23 +0000)]
Merge "LSRA: Fix X86 shuffle flags"
Igor Murashkin [Sat, 22 Nov 2014 00:19:58 +0000 (00:19 +0000)]
Merge "test: Fix assember_arm_test to compile on gcc"
Igor Murashkin [Sat, 22 Nov 2014 00:16:53 +0000 (16:16 -0800)]
test: Fix assember_arm_test to compile on gcc
Bug:
18484809
Change-Id: I2677de5fdb418091bc753271ad38972f375c96d8
Ian Rogers [Sat, 22 Nov 2014 00:15:29 +0000 (00:15 +0000)]
Merge "ART: X86 vectorized reduce may use incorrect extract index"
Razvan A Lupusoru [Wed, 29 Oct 2014 02:29:52 +0000 (19:29 -0700)]
ART: X86 vectorized reduce may use incorrect extract index
In the case of reduction to memory VR, the extract index is ignored.
However, it should not be ignored because it is needed for pextr instruction.
Change-Id: I46a0c76218a0553e677225e403786522c079d27d
Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Vladimir Marko [Fri, 21 Nov 2014 19:05:46 +0000 (19:05 +0000)]
Merge "Clean up MIRGraph pass temporaries."
Vladimir Marko [Fri, 31 Oct 2014 16:37:32 +0000 (16:37 +0000)]
Rewrite GVN's field id and field type handling.
Create a helper unit for dex insn classification and cache
dex field type (as encoded in the insn) in the MirFieldInfo.
Use this for cleanup and a few additional DCHECKs.
Change the GVN's field id to match the field lowering info
index (MIR::meta::{i,s}field_lowering_info), except where
multiple indexes refer to the same field and we use the
lowest of the applicable indexes. Use the MirMethodInfo from
MIRGraph to retrieve field type for GVN using this index.
This slightly reduces GVN compilation time and prepares for
further compilation time improvements.
Change-Id: I1b1247cdb8e8b6897254e2180f3230f10159bed5
Mathieu Chartier [Fri, 21 Nov 2014 18:15:38 +0000 (18:15 +0000)]
Merge "Fix oatdump to use OatHeader pointer size"
Mathieu Chartier [Fri, 21 Nov 2014 01:08:58 +0000 (17:08 -0800)]
Fix oatdump to use OatHeader pointer size
Bug:
18473190
Change-Id: If505b4f62105899f4f1257d3bccda3e6eb0dcd7c
(cherry picked from commit
c934e483ceabbd589422beea1fa35f5182ecfa99)
Vladimir Marko [Fri, 21 Nov 2014 13:41:32 +0000 (13:41 +0000)]
Clean up MIRGraph pass temporaries.
Create a union of pass-specific structs with temporaries
instead of shared temporaries with common names.
Change-Id: Id80d3b12c48139af1580b0839c21e07e7afd0ed5
Vladimir Marko [Fri, 21 Nov 2014 10:12:32 +0000 (10:12 +0000)]
Merge "Add card mark to filled-new-array."
Andreas Gampe [Fri, 21 Nov 2014 04:24:16 +0000 (04:24 +0000)]
Merge "ART: Fix uninitialized value in arm32 assembler test"
Andreas Gampe [Fri, 21 Nov 2014 04:22:31 +0000 (20:22 -0800)]
ART: Fix uninitialized value in arm32 assembler test
The first_ field was meant to be initialized for each generation
invocation.
Change-Id: If4d36d84afe24d8ddc6bb9d25b85c764285e166a
Andreas Gampe [Fri, 21 Nov 2014 01:06:41 +0000 (01:06 +0000)]
Merge "ART: Fix arm32 assembler test."
Andreas Gampe [Fri, 21 Nov 2014 01:01:10 +0000 (17:01 -0800)]
ART: Fix arm32 assembler test.
Drop the requested architecture from armv7ve to armv7-a, but tune
for cortex-a15. That allows sdiv and udiv, but has the advantage
that it works on gcc 4.8.
Change-Id: I92cca55ce01334119d8a402103ec295c66d34ca6
Christopher Ferris [Fri, 21 Nov 2014 00:07:42 +0000 (00:07 +0000)]
Merge "Restrict FDO to only apply to target build."
Dehao Chen [Thu, 13 Nov 2014 22:13:58 +0000 (14:13 -0800)]
Restrict FDO to only apply to target build.
Change-Id: I0ef4199b34c123a17eaf2c2f18bc8a1496e03cf8
Igor Murashkin [Thu, 20 Nov 2014 22:53:58 +0000 (22:53 +0000)]
Merge "dex2oat: Pack likely-dirty objects together when generating the boot image"
Igor Murashkin [Fri, 14 Nov 2014 23:01:59 +0000 (15:01 -0800)]
dex2oat: Pack likely-dirty objects together when generating the boot image
This introduces a new algorithm into image writer which "bins" objects
by how likely they are to be dirtied at runtime. Objects in the same bin
are placed contiguously in memory (i.e. into the same page). We try to
tune the bin selection based on how clean or how dirty the object will
likely be at runtime.
As-is, this saves about 150KB per-process (private-dirty pages) and 700KB in
zygote (shared-dirty).
There is still about 800KB of objects that are clean but located in
dirty pages, so with more analysis we can tune the bin selection and get
even more memory savings.
(cherry picked from commit
3f735bd4f9d09a0f9b2b01321e4c6917879dcae6)
Bug:
17611661
Change-Id: Ia1455e4c56ffd0a36ae2a723d35b7e06502980f7
Hiroshi Yamauchi [Thu, 20 Nov 2014 22:35:20 +0000 (22:35 +0000)]
Merge "Tune rosalloc buffer sizes."
Andreas Gampe [Thu, 20 Nov 2014 22:33:45 +0000 (22:33 +0000)]
Merge "ART: Assembler_arm_test"
Andreas Gampe [Tue, 18 Nov 2014 21:46:46 +0000 (13:46 -0800)]
ART: Assembler_arm_test
Add some generic test infrastructure, and update the arm32 test.
Supports many of the GPR instructions.
Change-Id: I8a270ec377f3266d6ab486e636abb50c56b87823
Hiroshi Yamauchi [Thu, 20 Nov 2014 22:16:06 +0000 (14:16 -0800)]
Tune rosalloc buffer sizes.
We now use one-page buffers for size brackets 4-7, instead of two-page
buffers, and the first 8 size brackets for thread-local allocations,
instead of 11.
No slowdown observed with MemAllocTest, EvaluateAndApplyChanges, and
BinaryTrees.
(cherrypick commit
c4cd95fa37b7138a0fa26d07c235aa409542aecd)
Bug:
18377775
Change-Id: I311f3adf9cab660d258833b17df7e6d905f73c72
Andreas Gampe [Thu, 20 Nov 2014 21:35:36 +0000 (21:35 +0000)]
Merge "ART: Split image and non-image case in dex2oat"
Ian Rogers [Thu, 20 Nov 2014 18:41:38 +0000 (18:41 +0000)]
Merge "Re-enable DumpNativeStack."
Ian Rogers [Thu, 20 Nov 2014 18:29:00 +0000 (10:29 -0800)]
Re-enable DumpNativeStack.
Bug:
15446488
Change-Id: Icdd0b90c8abe2a361a488fc1742c6896605ddc41
Ian Rogers [Thu, 20 Nov 2014 18:22:08 +0000 (18:22 +0000)]
Merge "Revert "Revert "Revert "Unfortunately, the test still hits too many run failures.""""
Ian Rogers [Thu, 20 Nov 2014 18:21:52 +0000 (18:21 +0000)]
Revert "Revert "Revert "Unfortunately, the test still hits too many run failures."""
This reverts commit
3cfb0d3421f9e5de782d20d61b011187c7edba1c.
Change-Id: Ifc4c48c45115d5593b0d064574019017c37c1fe7
Andreas Gampe [Wed, 19 Nov 2014 20:57:42 +0000 (12:57 -0800)]
ART: Split image and non-image case in dex2oat
Explicitly split out the cases (even if there is redundancy). Have
explicit flush and close operations.
Change-Id: I5ffa4c84b4f4a1f42244d4cb7af2b5cf36739c87
Vladimir Marko [Wed, 19 Nov 2014 18:52:35 +0000 (18:52 +0000)]
Add card mark to filled-new-array.
Bug:
18032332
Change-Id: I35576b27f9115e4d0b02a11afc5e483b9e93a04a
Narayan Kamath [Thu, 20 Nov 2014 10:47:22 +0000 (10:47 +0000)]
Merge "Prune image cache if the boot marker is still in place."
Sebastien Hertz [Thu, 20 Nov 2014 10:20:15 +0000 (10:20 +0000)]
Merge "JDWP: only deoptimize when it is required"
Nicolas Geoffray [Thu, 20 Nov 2014 09:35:39 +0000 (09:35 +0000)]
Merge "Update arm64/optimizing expectations."
Nicolas Geoffray [Thu, 20 Nov 2014 09:34:51 +0000 (09:34 +0000)]
Update arm64/optimizing expectations.
Change-Id: Ibd8292aa3ec2fb14ad8a4dadbccba23154e1b2d7
Ian Rogers [Thu, 20 Nov 2014 04:51:49 +0000 (04:51 +0000)]
Merge "Avoid JNI call with pending OOME."
Ian Rogers [Wed, 19 Nov 2014 22:05:21 +0000 (14:05 -0800)]
Avoid JNI call with pending OOME.
If EnsureResolved fails with an exception then FindClassInPathClassLoader may
fall-through to a call to NewStringUTF with a pending exception.
Bug:
15446488
Change-Id: I007f7bee7c50aa588d0b1c776da67a38314dc897
Mathieu Chartier [Wed, 19 Nov 2014 21:52:30 +0000 (21:52 +0000)]
Merge "Fix zygote space and non moving space map names"
Mathieu Chartier [Wed, 19 Nov 2014 18:51:42 +0000 (10:51 -0800)]
Fix zygote space and non moving space map names
Space names:
"non moving space" -> "zygote space"
"alloc space" -> "non moving space"
Bug:
18447855
Change-Id: Ia937b6d046ccf7f66bf1f6bbb9f17a5e0d00c016
(cherry picked from commit
c5d085c955244be1743c33227384e5b62076b8bd)
Mathieu Chartier [Wed, 19 Nov 2014 21:40:58 +0000 (21:40 +0000)]
Merge "Fix transitive equality error in set."
Mathieu Chartier [Tue, 18 Nov 2014 22:13:58 +0000 (14:13 -0800)]
Fix transitive equality error in set.
SubstringComparator used to be broken since it didn't have transitive
equality (ex. ab a ac). Now we use normal string comparison with
set.lower_bound saves an additional 12 bytes.
Also up frame size to 2700 to fix build.
Change-Id: Ie8d41faef37591e7feed1f5d2ad6258430b8ffb6
(cherry picked from commit
4b8b4693ee19efbd2d8692ca0b47b71f3b7da663)
Ian Rogers [Wed, 19 Nov 2014 21:09:12 +0000 (21:09 +0000)]
Merge "Improvements to the ARM64 disassembler."
Ian Rogers [Wed, 19 Nov 2014 20:28:36 +0000 (20:28 +0000)]
Merge "Fix the last users of TARGET_CPU_SMP."
Elliott Hughes [Mon, 17 Nov 2014 20:02:05 +0000 (12:02 -0800)]
Fix the last users of TARGET_CPU_SMP.
Everyone else assumes SMP.
Change-Id: I7ff7faef46fbec6c67d6e446812d599e473cba39
Ian Rogers [Wed, 19 Nov 2014 19:11:19 +0000 (19:11 +0000)]
Merge "AArch64: Addressing Cortex-A53 erratum 835769."
Bill Buzbee [Wed, 19 Nov 2014 19:03:48 +0000 (19:03 +0000)]
Merge "ART: X86Mir2Lir::OpRegRegReg should expect kOpMul for r_dest == r_src2 case"
Nicolas Geoffray [Wed, 19 Nov 2014 18:13:22 +0000 (18:13 +0000)]
Merge "Fix safepoint bug when computing live registers."
Nicolas Geoffray [Wed, 19 Nov 2014 15:17:56 +0000 (15:17 +0000)]
Fix safepoint bug when computing live registers.
Change-Id: I8f28dd287c0e04223c49dea6a323058c1b210913
Ian Rogers [Wed, 19 Nov 2014 18:09:32 +0000 (18:09 +0000)]
Merge "Fix a memory leak in jni_internal_test."
Ian Rogers [Wed, 19 Nov 2014 18:06:46 +0000 (10:06 -0800)]
Fix a memory leak in jni_internal_test.
Caught by valgrind.
Change-Id: I8b3cc0ce946bd457c380655d3e1237b029ed4cc3
Narayan Kamath [Fri, 7 Nov 2014 17:46:28 +0000 (17:46 +0000)]
Prune image cache if the boot marker is still in place.
We place a marker in each isa cache dir and have the framework
delete it for us.
This seems like a convenient place to do it given all the other
dalvik-cache related code that hooks in here, and also because
this is the first point where we try to access the cache.
TODO: Add a timeout to the (higher level) zygote code to correctly
kill the surviving zygote if one of them never comes up.
bug:
18280671
(cherry picked from commit
c38276177aeeda4326a54f1121790c154df04300)
(partial cherry-pick of
9433ec60b325b708b9fa87e699ab4a6565741494)
Change-Id: I5dbea21b4bf9ca4106a13225946d3f35f8060a43
Nicolas Geoffray [Wed, 19 Nov 2014 14:41:15 +0000 (14:41 +0000)]
Merge "Use HOptimization abstraction for running optimizations."
Nicolas Geoffray [Wed, 19 Nov 2014 14:35:26 +0000 (14:35 +0000)]
Merge "Remove file added after bad cherry pick."
Nicolas Geoffray [Tue, 18 Nov 2014 16:53:35 +0000 (16:53 +0000)]
Use HOptimization abstraction for running optimizations.
Move existing optimizations to it.
Change-Id: I3b43f9997faf4ed8875162e3a3abdf99375478dd
Nicolas Geoffray [Wed, 19 Nov 2014 14:27:56 +0000 (14:27 +0000)]
Remove file added after bad cherry pick.
Cherr-pick being: https://android-review.googlesource.com/#/c/115165.
Change-Id: If86ce4472fd1260477817cc380cd52755924094f
buzbee [Wed, 19 Nov 2014 14:11:19 +0000 (14:11 +0000)]
Merge "Quick compiler: fix x86 special identity"
Pavel Vyssotski [Tue, 18 Nov 2014 05:51:24 +0000 (11:51 +0600)]
ART: X86Mir2Lir::OpRegRegReg should expect kOpMul for r_dest == r_src2 case
OpRegRegReg in case of r_dest == r_src2 does not expect kOpMul as valid operation.
This provokes abort compiling instruction like "mul-int v0, v1, v0" if both
operands are arriving in registers.
The fix is to expect kOpMul as comutative operation.
Change-Id: I259e49edea4b8b08ca4ed1c61033bbc2b2229078
Signed-off-by: Pavel Vyssotski <pavel.n.vyssotski@intel.com>
Sebastien Hertz [Mon, 17 Nov 2014 18:00:37 +0000 (19:00 +0100)]
JDWP: only deoptimize when it is required
We don't need to deoptimize anything when we forced the use of the
interpreter (-Xint). In this case, no compiled code is executed
(except native methods which are not concerned by deoptimization).
Therefore we even don't need to enable/disable deoptimization support
in instrumentation.
We also don't need to deoptimize a method that hasn't been compiled.
Since it will run with interpreter, there is no point deoptimizing
it. However this method may be inlined in a compiled caller method
so we still need to deoptimize everything in this case.
This CL updates breakpoint support by storing the required kind of
deoptimization for a particular method. There are 3 cases:
- kNothing: the method does not require deoptimization.
- kSelectiveDeoptimization: the method needs to be deoptimized.
- kFullDeoptimization: we must deoptimize everythinig.
When uninstalling a breakpoint, we need to do the reverse operation.
Also fixes the SanityCheckExistingBreakpoints function to control
breakpoints related to the given method only and adds extra verbose
logs when choosing the appropriate deoptimization kind.
Bug:
18407046
Change-Id: I5212c1fd2f72e06c79e7871db15696824d37dc0b
buzbee [Wed, 19 Nov 2014 13:26:05 +0000 (05:26 -0800)]
Quick compiler: fix x86 special identity
The Quick compiler recognizes and specially handles a set of
small methods - including those that simply return one of their
arguments. For x86, special identity was broken if the returned
argument was a double that was passed half in register and half
in memory.
internal b/
17325447
Change-Id: I3a766977cdc0b4216d8ad65a9870c3250b32471e
Nicolas Geoffray [Wed, 19 Nov 2014 09:08:54 +0000 (09:08 +0000)]
Merge "Consistently use k{InstructionSet}WordSize."
Nicolas Geoffray [Wed, 19 Nov 2014 09:07:47 +0000 (09:07 +0000)]
Merge "Use cross-compilation helper."
Nicolas Geoffray [Wed, 19 Nov 2014 08:47:18 +0000 (08:47 +0000)]
Consistently use k{InstructionSet}WordSize.
These constants were defined prior to k{InstructionSet}PointerSize. So
use them consistently in optimizing as a first step. We can discuss
whether we should remove them in a second step.
Change-Id: If129de1a3bb8b65f8d9c816a8ad466815fb202e6
Nicolas Geoffray [Wed, 19 Nov 2014 08:35:17 +0000 (08:35 +0000)]
Use cross-compilation helper.
The default method uses the current pointer size. We should
use the pointer size given to the compiler.
Change-Id: I4d6bacad6c17ac715455cabfc89cc651368d07a5
Andreas Gampe [Wed, 19 Nov 2014 01:28:48 +0000 (01:28 +0000)]
Merge "ART: Track Flush & Close in FdFile"
Andreas Gampe [Thu, 6 Nov 2014 09:00:46 +0000 (01:00 -0800)]
ART: Track Flush & Close in FdFile
Implement a check that aborts when a file hasn't been explicitly
flushed and closed when it is destructed.
Add WARN_UNUSED to FdFile methods.
Update dex2oat, patchoat, scoped_flock and some gtests to pass with
this.
(cherry picked from commit
9433ec60b325b708b9fa87e699ab4a6565741494)
Change-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4
Mathieu Chartier [Tue, 18 Nov 2014 23:39:24 +0000 (23:39 +0000)]
Merge "Fix no relocate host tests"
Mathieu Chartier [Tue, 18 Nov 2014 23:34:09 +0000 (15:34 -0800)]
Fix no relocate host tests
Change-Id: I905bf0327685d2119a2a5d157795e0e3f16286a7
Andreas Gampe [Tue, 18 Nov 2014 21:49:52 +0000 (21:49 +0000)]
Merge "ART: Build fix"
Andreas Gampe [Tue, 18 Nov 2014 21:48:34 +0000 (13:48 -0800)]
ART: Build fix
Change-Id: I0c4d1c2981bdfb95e12c8c624826349281ada0cf
Mathieu Chartier [Tue, 18 Nov 2014 21:05:53 +0000 (21:05 +0000)]
Merge "Change 64 bit ArtMethod fields to be pointer sized"
Mathieu Chartier [Mon, 10 Nov 2014 19:08:06 +0000 (11:08 -0800)]
Change 64 bit ArtMethod fields to be pointer sized
Changed the 64 bit entrypoint and gc map fields in ArtMethod to be
pointer sized. This saves a large amount of memory on 32 bit systems.
Reduces ArtMethod size by 16 bytes on 32 bit.
Total number of ArtMethod on low memory mako: 169957
Image size: 49203 methods -> 787248 image size reduction.
Zygote space size: 1070 methods -> 17120 size reduction.
App methods: ~120k -> 2 MB savings.
Savings per app on low memory mako: 125K+ per app
(less active apps -> more image methods per app).
Savings depend on how often the shared methods are on dirty pages vs
shared.
TODO in another CL, delete gc map field from ArtMethod since we
should be able to get it from the Oat method header.
Bug:
17643507
Change-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8
(cherry picked from commit
e832e64a7e82d7f72aedbd7d798fb929d458ee8f)
Vladimir Marko [Tue, 18 Nov 2014 18:14:07 +0000 (18:14 +0000)]
Merge "Do not try to sharpen super calls to abstract methods."
Vladimir Marko [Tue, 18 Nov 2014 14:47:31 +0000 (14:47 +0000)]
Do not try to sharpen super calls to abstract methods.
Bug:
18380491
(cherry picked from commit
474123dccc5aa9a0dfe566d332174877fd5b7040)
Change-Id: I6637aaa562115f6b07d8637f0cc6658f1a6739bb
Nicolas Geoffray [Tue, 18 Nov 2014 15:56:18 +0000 (15:56 +0000)]
Merge "Fix typo."
Nicolas Geoffray [Tue, 18 Nov 2014 15:55:32 +0000 (15:55 +0000)]
Fix typo.
Change-Id: Iac3b6b2206bfacf5133775b706893fc80dcad5ec
Nicolas Geoffray [Tue, 18 Nov 2014 15:37:50 +0000 (15:37 +0000)]
Merge "Opt compiler: Add support for more IRs on arm64."
Alexandre Rames [Tue, 18 Nov 2014 10:55:16 +0000 (10:55 +0000)]
Opt compiler: Add support for more IRs on arm64.
Change-Id: I4b6425135d1af74912a206411288081d2516f8bf
Dmitry Petrochenko [Fri, 14 Nov 2014 11:32:56 +0000 (17:32 +0600)]
LSRA: Fix X86 shuffle flags
The shuffle opcodes for X86 have incorrect flags. Fix them.
Clean up a couple of the printable string names too to remove an extra
"kX86".
Change-Id: I52a0ebdb1334cf0904bc2399eaf28b7cda041112
Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Matteo Franchin [Mon, 27 Oct 2014 13:29:30 +0000 (13:29 +0000)]
AArch64: Addressing Cortex-A53 erratum 835769.
Some early revisions of the Cortex-A53 have an erratum (835769) whereby
it is possible for a 64-bit multiply-accumulate instruction in AArch64
state to generate an incorrect result. The conditions which a portion
of code must satisfy in order for the issue to be observed are somewhat
complex, but all cases end with a memory (load, store, or prefetch)
instruction followed immediately by the multiply-accumulate operation.
This commit makes sure to insert a nop instruction before a 64-bit msub
instruction, whenever the latter is preceded by a memory instruction.
This behaviour should make it impossible for the Arm64 backend to
generate a sequence of instructions which matches the erratum
conditions.
Change-Id: I0022eccd41180183c20231dab6e2671d001a204c
Nicolas Geoffray [Tue, 18 Nov 2014 10:15:18 +0000 (10:15 +0000)]
Merge "Fix a bug in the type propagation phase of optimizing."
Roland Levillain [Tue, 18 Nov 2014 09:59:13 +0000 (09:59 +0000)]
Merge "Add support for int-to-float & int-to-double in optimizing."
Hiroshi Yamauchi [Tue, 18 Nov 2014 02:22:09 +0000 (02:22 +0000)]
Merge "Enable the hspace compaction on OOM by default."