OSDN Git Service
Andreas Gampe [Mon, 14 Mar 2016 21:03:47 +0000 (21:03 +0000)]
Merge "ART: Remember whether the cache was pruned" into nyc-dev
Mathieu Chartier [Mon, 14 Mar 2016 20:28:30 +0000 (20:28 +0000)]
Merge "Do not include image header in decompressed size" into nyc-dev
Mathieu Chartier [Mon, 14 Mar 2016 18:02:59 +0000 (11:02 -0700)]
Do not include image header in decompressed size
Could cause a buffer overflow since we told LZ4 to decompress more
bytes than necessary.
Bug:
27561308
Change-Id: Ic938f3e67f8c0627f203ad7261d4342ce43157cd
Calin Juravle [Mon, 14 Mar 2016 19:30:07 +0000 (19:30 +0000)]
Merge "Don't be so agressive in quering the code cache for new methods" into nyc-dev
Calin Juravle [Mon, 14 Mar 2016 17:32:49 +0000 (17:32 +0000)]
Don't be so agressive in quering the code cache for new methods
Interim fix for apps which JIT a lot and trigger a lot of I/O because of
profile data (e.g. gmscore).
This reduces the amount of data re-written to disk by a few order of
magnitude. (e.g. 43k instead of 3.5MB)
Proper fix which will make the writing smarter is coming.
Bug:
27600652
Change-Id: I7582bfab9abee6efebfe99da6979f7e118f82915
Mathieu Chartier [Mon, 14 Mar 2016 18:33:43 +0000 (18:33 +0000)]
Merge "Fix cases where we miss instrumentation changes" into nyc-dev
Andreas Gampe [Sat, 12 Mar 2016 01:44:04 +0000 (17:44 -0800)]
ART: Remember whether the cache was pruned
Remember (and expose) whether the cache was pruned when initializing
the runtime.
Bug:
27618311
Change-Id: I178d18d731a9dce5cb11ed0874c9c9c9d36d7d8e
Mathieu Chartier [Sat, 12 Mar 2016 01:22:23 +0000 (17:22 -0800)]
Fix cases where we miss instrumentation changes
Moved allocation stack push to after we record the allocation since
it can cause thread suspension.
Added handling in entrypoint utils for thread suspension cases.
Keep the AllocRecordObjectMap around since we do not want to delete
it if there are any threads waiting on new_record_condition_. The
condition guards adding stack traces while the GC is running. If we
delete the map and there are still waiters that did not resume, it
caused a CHECK failure. This could happen in cases where one thread
disables allocation tracking while other threads are about to
resume from the condition.
Bug:
27506909
Change-Id: I097689ca35ad408121c6b8dabd28e75cce1a43a0
Andreas Gampe [Sat, 20 Feb 2016 03:45:34 +0000 (19:45 -0800)]
ART: Check alignment of section offsets
Make sure the sections mentioned in the header are aligned according
to the Dalvik File Format specification.
Ensure the same for annotations.
Bug:
27275385
Bug: https://code.google.com/p/android/issues/detail?id=201384
(cherry picked from commit
b512c0e5da0767d00a0ee9b7201668ab9977e21b)
Change-Id: Ifdd98377f8468e78c1c2198223ad58cab302dd37
Nicolas Geoffray [Mon, 14 Mar 2016 08:52:56 +0000 (08:52 +0000)]
Merge remote-tracking branch 'goog/master' into nyc-dev
bug:
27398183
bug:
26846185
bug:
27424509
Stephen Hines [Sat, 12 Mar 2016 01:06:06 +0000 (01:06 +0000)]
Enable clang for ARM builds.
am:
48c3ce6733
* commit '
48c3ce6733efbc545605b1bfe2ddbdf95a04edf3':
Enable clang for ARM builds.
Andreas Gampe [Sat, 12 Mar 2016 00:07:46 +0000 (00:07 +0000)]
ART: Allow unwinding unattached threads
am:
b9d4f99977
* commit '
b9d4f999773754ab4e84496edf60af60b05119de':
ART: Allow unwinding unattached threads
buzbee [Fri, 11 Mar 2016 23:13:56 +0000 (23:13 +0000)]
Merge "ART: mterp arm/arm64 cleanup"
am:
e717e2c2c4
* commit '
e717e2c2c436da1d6daa572bd3142e34aef25b1c':
ART: mterp arm/arm64 cleanup
Bill Buzbee [Fri, 11 Mar 2016 23:05:59 +0000 (23:05 +0000)]
Merge "ART: mterp arm/arm64 cleanup"
Stephen Hines [Thu, 3 Mar 2016 02:26:29 +0000 (18:26 -0800)]
Enable clang for ARM builds.
Bug: http://b/
25130937
We disable the integrated assembler for the ARM interpreter because
Clang can't handle the syntax present.
(cherry picked from commit
a388c5a6291dbfb9a8366181a752050f4898d4ff)
Change-Id: Iefd5ba922eec54a2167e8a057c459b289aaf2ef3
buzbee [Fri, 11 Mar 2016 17:51:11 +0000 (09:51 -0800)]
ART: mterp arm/arm64 cleanup
Assembly code cleanup in response to comments from already-submitted
CL: https://android-review.googlesource.com/#/c/188977/
Change-Id: I0ea85c5759a08cb50ef3e97dc5cf79b3ba041640
Stephen Hines [Fri, 11 Mar 2016 21:27:36 +0000 (21:27 +0000)]
Merge "Enable clang for ARM builds."
am:
2f74be0856
* commit '
2f74be0856b56942614ec65896853a58a37b7aff':
Enable clang for ARM builds.
Hiroshi Yamauchi [Fri, 11 Mar 2016 21:27:36 +0000 (21:27 +0000)]
Merge "Assembly region TLAB allocation fast path for arm."
am:
91cdf71e16
* commit '
91cdf71e166630eb5e28e02298b0ba6ed4037553':
Assembly region TLAB allocation fast path for arm.
Stephen Hines [Fri, 11 Mar 2016 21:19:48 +0000 (21:19 +0000)]
Merge "Enable clang for ARM builds."
Hiroshi Yamauchi [Fri, 11 Mar 2016 21:18:21 +0000 (21:18 +0000)]
Merge "Assembly region TLAB allocation fast path for arm."
Hiroshi Yamauchi [Wed, 24 Feb 2016 20:51:18 +0000 (12:51 -0800)]
Assembly region TLAB allocation fast path for arm.
This is for the CC collector.
Share the common fast path code with the tlab fast path code.
Speedup (on N5):
BinaryTrees: 2291 -> 902 ms (-60%)
MemAllocTest: 2137 -> 1845 ms (-14%)
Bug:
9986565
Bug:
12687968
Change-Id: Ica63094ec2f85eaa4fd04d202a20090399275d85
Andreas Gampe [Fri, 11 Mar 2016 20:22:27 +0000 (20:22 +0000)]
Merge "ART: Allow unwinding unattached threads"
am:
43bad209f9
* commit '
43bad209f99df82412dadab5e3b735bb12d257ab':
ART: Allow unwinding unattached threads
Andreas Gampe [Tue, 1 Mar 2016 22:38:37 +0000 (14:38 -0800)]
ART: Allow unwinding unattached threads
Partial revert of commit
ed8b723c5f3989d2593ec21c65c96d6d8bf25579.
Make it (constexpr) configurable whether we allow unwinding native
stacks of unattached threads.
Bug:
27449879
(cherry picked from commit
8d1594da6e97cd11580baf30ee4b75d4e7e2616a)
Change-Id: Iad3f3dde63155993bb4efb7bbbbde3e36f1379cc
Christopher Ferris [Fri, 11 Mar 2016 20:14:18 +0000 (20:14 +0000)]
Merge "ART: Allow unwinding unattached threads"
Artem Serov [Fri, 11 Mar 2016 19:57:39 +0000 (19:57 +0000)]
Merge "Integrate BitwiseNegated into shared framework."
am:
95f931eefd
* commit '
95f931eefd6a694a27548c3503ca56559a2b868b':
Integrate BitwiseNegated into shared framework.
Vladimir Marko [Fri, 11 Mar 2016 19:48:08 +0000 (19:48 +0000)]
Merge "Integrate BitwiseNegated into shared framework."
Roland Levillain [Fri, 11 Mar 2016 19:36:56 +0000 (19:36 +0000)]
Merge "Typo in comment in art::mirror::Object::IdentityHashCode."
am:
cdd3991f82
* commit '
cdd3991f821f027c9ac6674057603ba4ad9c2bb0':
Typo in comment in art::mirror::Object::IdentityHashCode.
David Srbecky [Fri, 11 Mar 2016 19:30:58 +0000 (19:30 +0000)]
Merge "Fix DCHECK in OatQuickMethodHeader::GetFrameSizeInBytes()"
am:
5e447d872a
* commit '
5e447d872a9529e5002d08dd97643c400ba9176c':
Fix DCHECK in OatQuickMethodHeader::GetFrameSizeInBytes()
Roland Levillain [Fri, 11 Mar 2016 19:28:44 +0000 (19:28 +0000)]
Merge "Typo in comment in art::mirror::Object::IdentityHashCode."
David Srbecky [Fri, 11 Mar 2016 19:25:45 +0000 (19:25 +0000)]
Merge "Fix DCHECK in OatQuickMethodHeader::GetFrameSizeInBytes()"
David Srbecky [Fri, 11 Mar 2016 18:48:55 +0000 (18:48 +0000)]
Fix DCHECK in OatQuickMethodHeader::GetFrameSizeInBytes()
We should check whether the frame is divisible by kStackAlignment.
Change-Id: I5936a6e90b38c09775b4c3a8212641e639c4181c
Aart Bik [Fri, 11 Mar 2016 18:49:16 +0000 (18:49 +0000)]
Merge "Tests for round() method."
am:
fe9242b97d
* commit '
fe9242b97d3270e28d88971be71593787342cc4f':
Tests for round() method.
Aart Bik [Fri, 11 Mar 2016 18:43:28 +0000 (18:43 +0000)]
Merge "Tests for round() method."
Hiroshi Yamauchi [Fri, 11 Mar 2016 18:31:02 +0000 (18:31 +0000)]
Merge "Suppress a valgrind libc issue."
am:
24129be9f8
* commit '
24129be9f8cb6a80d246eeda20b2ef1397190f29':
Suppress a valgrind libc issue.
Hiroshi Yamauchi [Fri, 11 Mar 2016 18:24:22 +0000 (18:24 +0000)]
Merge "Suppress a valgrind libc issue."
David Srbecky [Fri, 11 Mar 2016 18:23:44 +0000 (18:23 +0000)]
Merge "Revert "Revert "Allow duplicated methods in different DWARF line tables."""
am:
2de1e8a52e
* commit '
2de1e8a52ef8d4b2e033f3404ca9cc970bb5149c':
Revert "Revert "Allow duplicated methods in different DWARF line tables.""
David Srbecky [Fri, 11 Mar 2016 18:23:44 +0000 (18:23 +0000)]
Merge "DWARF: Compensate for compiler\'s off-by-one instruction."
am:
9faab4dd50
* commit '
9faab4dd50d2bdda12284c6b8d3837943a73b5da':
DWARF: Compensate for compiler's off-by-one instruction.
Hiroshi Yamauchi [Thu, 10 Mar 2016 21:49:14 +0000 (13:49 -0800)]
Suppress a valgrind libc issue.
To prevent our valgrind tests from failing.
Bug:
27596582
Bug:
27156726
Change-Id: Ic55256bd09fdffcf2a0c8fa4fa7951bc648b86a8
David Srbecky [Fri, 11 Mar 2016 18:19:11 +0000 (18:19 +0000)]
Merge "Revert "Revert "Allow duplicated methods in different DWARF line tables."""
David Srbecky [Fri, 11 Mar 2016 14:35:45 +0000 (14:35 +0000)]
Revert "Revert "Allow duplicated methods in different DWARF line tables.""
This reverts commit
8862fac4a0b97d827d2808146d2d79b8d799b998.
Change-Id: I4d5629df4580b7ac08a5cb04924c56eecad3ad25
David Srbecky [Fri, 11 Mar 2016 18:16:35 +0000 (18:16 +0000)]
Merge "DWARF: Compensate for compiler's off-by-one instruction."
David Srbecky [Fri, 11 Mar 2016 17:48:57 +0000 (17:48 +0000)]
Merge "Symbolize native debug information for AOTed methods in boot.oat."
am:
6030b15ce8
* commit '
6030b15ce83ac2a9fb78cd9d137b6f4b441e6417':
Symbolize native debug information for AOTed methods in boot.oat.
David Srbecky [Fri, 11 Mar 2016 17:42:59 +0000 (17:42 +0000)]
Merge "Add trampoline symbols to native debug info."
am:
b2359d4fb2
* commit '
b2359d4fb2c9de12830301faede59f4d5fa46278':
Add trampoline symbols to native debug info.
David Srbecky [Fri, 11 Mar 2016 17:41:52 +0000 (17:41 +0000)]
Merge "Symbolize native debug information for AOTed methods in boot.oat."
David Srbecky [Mon, 7 Mar 2016 20:47:29 +0000 (20:47 +0000)]
Symbolize native debug information for AOTed methods in boot.oat.
The oatdump symbolizer will produce all DWARF information now,
not just the symtab. This allows us to recover almost all native
debug information after the fact, even for non-debuggable oat files.
The main drawback is that non-debuggable oat files do not have
enough stackmaps to provide reasonable line stepping experience.
We might also be missing inlined methods from backtraces.
Change-Id: I73ff6f43a3a0e5a0907af353f74f04e9b0129590
David Srbecky [Fri, 11 Mar 2016 17:38:55 +0000 (17:38 +0000)]
Merge "Minor optimizations of debug::WriteCFISection."
am:
fdaa583e78
* commit '
fdaa583e785383cca68df63c7ef53fcaf667b8e2':
Minor optimizations of debug::WriteCFISection.
David Srbecky [Fri, 11 Mar 2016 17:35:48 +0000 (17:35 +0000)]
Merge "Add trampoline symbols to native debug info."
David Srbecky [Fri, 11 Mar 2016 17:11:44 +0000 (17:11 +0000)]
Add trampoline symbols to native debug info.
The debugger needs them to unwind through the trampolines and to
understand what is happening in the call stack.
Change-Id: Ia554058c3796788adcd7336d620a7734eb366905
David Srbecky [Fri, 11 Mar 2016 17:33:22 +0000 (17:33 +0000)]
Merge "Minor optimizations of debug::WriteCFISection."
David Srbecky [Fri, 11 Mar 2016 16:54:22 +0000 (16:54 +0000)]
Minor optimizations of debug::WriteCFISection.
The method might be passed method infos without CFI in some cases.
Use the sorting phase as a chance to filter them out.
This makes sure we do not allocate memory and sort methods if there
is in fact no work to do.
Also change the sort to stable - for the sake of determinism.
Change-Id: I97d57d77e8b709d0d49d6971f66b955efcbb57b0
Roland Levillain [Fri, 11 Mar 2016 16:27:27 +0000 (16:27 +0000)]
Typo in comment in art::mirror::Object::IdentityHashCode.
Change-Id: I5380d1c34deda32c668e48ed5f80e96b29f5b0b5
Goran Jakovljevic [Fri, 11 Mar 2016 16:54:12 +0000 (16:54 +0000)]
Merge "MIPS: Don\'t use for calling entrypoints"
am:
fa3857ee61
* commit '
fa3857ee61e193471ad3547e02bafccdc712b556':
MIPS: Don't use $t8 for calling entrypoints
Roland Levillain [Fri, 11 Mar 2016 16:47:02 +0000 (16:47 +0000)]
Merge "MIPS: Don't use $t8 for calling entrypoints"
Anton Shamin [Fri, 11 Mar 2016 16:44:03 +0000 (16:44 +0000)]
Merge "Revert "Revert "Revert "Revert "Change condition to opposite if lhs is constant"""""
am:
a9e68021a8
* commit '
a9e68021a88566f31b0ba1a997ac3c61d3081c40':
Revert "Revert "Revert "Revert "Change condition to opposite if lhs is constant""""
Nicolas Geoffray [Fri, 11 Mar 2016 16:37:23 +0000 (16:37 +0000)]
Merge "Revert "Revert "Revert "Revert "Change condition to opposite if lhs is constant"""""
Nicolas Geoffray [Fri, 11 Mar 2016 16:22:46 +0000 (16:22 +0000)]
Merge "Fix invariant in reference type propagation."
am:
62a9841469
* commit '
62a9841469f99810b2b39b0748cb113af0e8913a':
Fix invariant in reference type propagation.
David Srbecky [Fri, 11 Mar 2016 14:25:00 +0000 (14:25 +0000)]
DWARF: Compensate for compiler's off-by-one instruction.
The compiler generates stackmaps with PC value which is *after*
the instruction rather PC of the instruction itself. This causes
trouble when generating native line number mapping since the
branch instruction itself will not be mapped, and consequently
we get incorrect line number in backtraces. Add code to compensate
for this. See the in-code comment for more details.
Change-Id: I72c992e6d08a767f314290d562421b251ae60732
Goran Jakovljevic [Fri, 11 Mar 2016 14:22:18 +0000 (15:22 +0100)]
MIPS: Don't use $t8 for calling entrypoints
When jumping to entrypoints, $t9 register must be used. Value of $gp
is calculated based on value from $t9 and it should contain the
address of the first instruction of the entrypoint.
This CL enables MIPS32 and MIPS64 to boot.
Change-Id: Idf0f7f479cceafabb88b1b087da190dbda86e1c3
Nicolas Geoffray [Fri, 11 Mar 2016 16:15:32 +0000 (16:15 +0000)]
Merge "Fix invariant in reference type propagation."
David Srbecky [Fri, 11 Mar 2016 14:43:35 +0000 (14:43 +0000)]
Merge "Revert "Allow duplicated methods in different DWARF line tables.""
am:
60e10c8564
* commit '
60e10c8564f47de0b7f29b26d040c591d5a396b5':
Revert "Allow duplicated methods in different DWARF line tables."
David Srbecky [Fri, 11 Mar 2016 14:35:33 +0000 (14:35 +0000)]
Merge "Revert "Allow duplicated methods in different DWARF line tables.""
David Srbecky [Fri, 11 Mar 2016 14:34:47 +0000 (14:34 +0000)]
Revert "Allow duplicated methods in different DWARF line tables."
This reverts commit
3c5462364daee17e651299f1c370f965f34baed8.
Change-Id: Icc63c47cd53abeff2a470ae84715012a1ef988ac
David Srbecky [Fri, 11 Mar 2016 14:33:20 +0000 (14:33 +0000)]
Merge "Allow duplicated methods in different DWARF line tables."
am:
8583b44f8b
* commit '
8583b44f8b5788b57be4d4738072dc6a99c49823':
Allow duplicated methods in different DWARF line tables.
David Srbecky [Fri, 11 Mar 2016 14:33:19 +0000 (14:33 +0000)]
Merge "Allow generation of native debug info for multiple methods."
am:
cc22d41d4d
* commit '
cc22d41d4de2514cc3cb4ed569764a35f15da48d':
Allow generation of native debug info for multiple methods.
David Srbecky [Fri, 11 Mar 2016 14:33:19 +0000 (14:33 +0000)]
Merge "Refactor MethodDebugInfo (input of DWARF writer)."
am:
1a008a1277
* commit '
1a008a127730710f8f56c1ca66385e1b062a2dcb':
Refactor MethodDebugInfo (input of DWARF writer).
David Srbecky [Fri, 11 Mar 2016 14:28:00 +0000 (14:28 +0000)]
Merge "Allow duplicated methods in different DWARF line tables."
David Srbecky [Fri, 11 Mar 2016 14:25:56 +0000 (14:25 +0000)]
Merge "Allow generation of native debug info for multiple methods."
David Srbecky [Fri, 11 Mar 2016 14:25:40 +0000 (14:25 +0000)]
Merge "Refactor MethodDebugInfo (input of DWARF writer)."
David Srbecky [Fri, 11 Mar 2016 11:49:20 +0000 (11:49 +0000)]
Allow duplicated methods in different DWARF line tables.
This makes the compilation units more self-contained.
If method is mentioned in the compilation unit, we can
also find its line table there. Otherwise, we would have
to search through all of them.
Change-Id: I0cdfb9006e796e41e123fc1f4fecd15312570068
Nicolas Geoffray [Fri, 11 Mar 2016 13:35:51 +0000 (13:35 +0000)]
Fix invariant in reference type propagation.
Also some cleanups.
Change-Id: I7f0ec7d06b4bab10dbfa230c757447d311658f93
Artem Serov [Tue, 9 Feb 2016 17:15:29 +0000 (17:15 +0000)]
Integrate BitwiseNegated into shared framework.
Share implementation between arm and arm64.
Change-Id: I0dd12e772cb23b4c181fd0b1e2a447470b1d8702
Anton Shamin [Mon, 15 Feb 2016 06:48:36 +0000 (12:48 +0600)]
Revert "Revert "Revert "Revert "Change condition to opposite if lhs is constant""""
This reverts commit
d4aee949b3dd976295201b5310f13aa2df40afa1.
Change-Id: I505b8c9863c310a3a708f580b00d425b750c9541
Nicolas Geoffray [Fri, 11 Mar 2016 11:51:18 +0000 (11:51 +0000)]
Merge "Fix thread race when fetching the ProfilingInfo object."
am:
2af7213a4e
* commit '
2af7213a4e0d395fe22dcdce6ec10a3bd131023d':
Fix thread race when fetching the ProfilingInfo object.
Nicolas Geoffray [Fri, 11 Mar 2016 11:33:13 +0000 (11:33 +0000)]
Merge "Fix thread race when fetching the ProfilingInfo object."
Nicolas Geoffray [Fri, 11 Mar 2016 09:57:57 +0000 (09:57 +0000)]
Fix thread race when fetching the ProfilingInfo object.
Problem is:
1) Compiler fetches the ProfilingInfo of A, it's null.
2) Mutator creates the ProfilingInfo.
3) Compiler notifies it's not using A anymore, calls
ProfilingInfo::DecrementInlineUse -> Crash as we expected
ProfilingInfo::IncrementUse to be called before.
Also update some namings to better reflect what is going on.
Change-Id: I55ea4c5d81988131467095e18a0d13a8be9d0ef7
Andreas Gampe [Tue, 1 Mar 2016 22:38:37 +0000 (14:38 -0800)]
ART: Allow unwinding unattached threads
Partial revert of commit
ed8b723c5f3989d2593ec21c65c96d6d8bf25579.
Make it (constexpr) configurable whether we allow unwinding native
stacks of unattached threads.
Bug:
27449879
Change-Id: I307a80c9a0166f33fa8a41e492d7eb0d77d0e44f
Christopher Ferris [Thu, 10 Mar 2016 22:50:36 +0000 (22:50 +0000)]
Merge "Log when why an Unwind failed."
am:
b7f257f353
* commit '
b7f257f353b1eb2db2732939a0404c118316891d':
Log when why an Unwind failed.
Christopher Ferris [Thu, 10 Mar 2016 22:29:13 +0000 (22:29 +0000)]
Log when why an Unwind failed.
am:
fa16a6d003
* commit '
fa16a6d0039801293f7f4c035b4876d72f880adf':
Log when why an Unwind failed.
Christopher Ferris [Thu, 10 Mar 2016 00:03:00 +0000 (16:03 -0800)]
Log when why an Unwind failed.
Bug:
27449879
(cherry picked from commit
f193878a242f5b86db62986a9b2cba5d99505c17)
Change-Id: Ieb4f258feaaef70a4982495e4f63ed778280b8da
Christopher Ferris [Thu, 10 Mar 2016 22:12:34 +0000 (22:12 +0000)]
Merge "Log when why an Unwind failed."
Mathieu Chartier [Thu, 10 Mar 2016 21:06:33 +0000 (21:06 +0000)]
Allocate interrupted exception before re-acquiring lock
am:
3a84e31b24
* commit '
3a84e31b247f0c7b6c31946f15def732d556282c':
Allocate interrupted exception before re-acquiring lock
Mathieu Chartier [Thu, 10 Mar 2016 20:13:48 +0000 (20:13 +0000)]
Merge "Allocate interrupted exception before re-acquiring lock"
am:
3d63118460
* commit '
3d63118460dbcff330cb188ea86bd5ad5cda5f99':
Allocate interrupted exception before re-acquiring lock
Andreas Gampe [Thu, 10 Mar 2016 20:13:48 +0000 (20:13 +0000)]
Merge "ART: Release all resource on MonitorPool destruction"
am:
7aedfdb232
* commit '
7aedfdb232f167300cd8e3322e193eee6f433061':
ART: Release all resource on MonitorPool destruction
Mathieu Chartier [Thu, 10 Mar 2016 20:07:55 +0000 (20:07 +0000)]
Merge "Allocate interrupted exception before re-acquiring lock"
Mathieu Chartier [Thu, 10 Mar 2016 18:49:35 +0000 (10:49 -0800)]
Allocate interrupted exception before re-acquiring lock
Allocating the monitor exception after acquiring the lock can cause
a deadlock in the following scenario:
Reference queue daemon interrupted from wait() on
ReferenceQueue.class. Tries to allocate exception and starts a GC
that blocks on WaitForGcToComplete.
Some other thread is already doing a GC, and tries to enqueue the
cleared refereneces. This deadlocks trying to lock Reference.class
in ReferenceQueue.add.
Bug:
27508829
(cherry picked from commit
daed5d81e2fdb9d1e03ee6c34567347b92dcfb22)
Change-Id: Ibdc2769077976545385d8c6ecc5bf26316eb70a1
Andreas Gampe [Thu, 10 Mar 2016 20:06:27 +0000 (20:06 +0000)]
Merge "ART: Release all resource on MonitorPool destruction"
Andreas Gampe [Thu, 10 Mar 2016 16:33:45 +0000 (08:33 -0800)]
ART: Release all resource on MonitorPool destruction
To be valgrind-clean, we need to release the current metadata and
all chunks on destruction.
Bug:
27156726
Change-Id: Ia51cea139a6e9669975b6ac045f5223cd68f1f6a
Mathieu Chartier [Thu, 10 Mar 2016 18:49:35 +0000 (10:49 -0800)]
Allocate interrupted exception before re-acquiring lock
Allocating the monitor exception after acquiring the lock can cause
a deadlock in the following scenario:
Reference queue daemon interrupted from wait() on
ReferenceQueue.class. Tries to allocate exception and starts a GC
that blocks on WaitForGcToComplete.
Some other thread is already doing a GC, and tries to enqueue the
cleared refereneces. This deadlocks trying to lock Reference.class
in ReferenceQueue.add.
Bug:
27508829
Change-Id: Icbc18b6b8d1e906c3f7413810d6cefdda06eb921
Christopher Ferris [Thu, 10 Mar 2016 00:03:00 +0000 (16:03 -0800)]
Log when why an Unwind failed.
Bug:
27449879
Change-Id: If7ae5f0991da6fd64dd45e22d69eecef1388a28e
Aart Bik [Thu, 10 Mar 2016 18:59:10 +0000 (10:59 -0800)]
Tests for round() method.
Rationale:
While working on some ideas on implementing round(),
I wrote these tests. We might as well use them to
ensure any future work does not break (test also
provides an easy place to add future "difficult" values).
bug=
26327751
Change-Id: I911a3e1e5fe45147bc1b7214225c9aec4e979965
Vladimir Marko [Thu, 10 Mar 2016 18:57:35 +0000 (18:57 +0000)]
Merge "ART: Do not use vixld - workaround to fix dex2oatds."
am:
8e21351507
* commit '
8e213515077e11acdd664ec4a770a73e2f804863':
ART: Do not use vixld - workaround to fix dex2oatds.
Aart Bik [Thu, 10 Mar 2016 18:50:08 +0000 (18:50 +0000)]
Merge "Avoid generating dead code on frame enter/exit. This includes stack operations and, on x86, call/pop to read PC."
am:
8189b0b4e1
* commit '
8189b0b4e1f14420382b87e900dd6a50aec9c2de':
Avoid generating dead code on frame enter/exit. This includes stack operations and, on x86, call/pop to read PC.
Vladimir Marko [Thu, 10 Mar 2016 18:48:37 +0000 (18:48 +0000)]
Merge "ART: Do not use vixld - workaround to fix dex2oatds."
Aart Bik [Thu, 10 Mar 2016 18:39:18 +0000 (18:39 +0000)]
Merge "Avoid generating dead code on frame enter/exit. This includes stack operations and, on x86, call/pop to read PC."
Vladimir Marko [Thu, 10 Mar 2016 17:25:50 +0000 (17:25 +0000)]
ART: Do not use vixld - workaround to fix dex2oatds.
This is a quick workaround for ODR violations caused
by linking libvixl.a compiled without VIXL_DEBUG with
the libartd-compiler.a compiled with VIXL_DEBUG.
Bug:
27588884
Change-Id: Ib1af165f177f125f03cdd99777dff4c2912f6405
Douglas Leung [Thu, 10 Mar 2016 17:25:19 +0000 (17:25 +0000)]
Merge "Add Mips abiflags section to the oatfile."
am:
8411aa3d88
* commit '
8411aa3d88f4baf583ec4ecd62bb619cacd28acb':
Add Mips abiflags section to the oatfile.
Chris Larsen [Thu, 10 Mar 2016 17:25:19 +0000 (17:25 +0000)]
Merge "MIPS32: java.lang.Thread, and java.lang.String intrinsics:"
am:
0555c78e50
* commit '
0555c78e5015ea4f9b1c064a5c77eb693f2edbe1':
MIPS32: java.lang.Thread, and java.lang.String intrinsics:
Aart Bik [Thu, 3 Mar 2016 00:06:13 +0000 (16:06 -0800)]
Avoid generating dead code on frame enter/exit.
This includes stack operations and, on x86, call/pop to read PC.
bug=
26997690
Rationale:
(1) If method is fully intrinsified, and makes no calls in slow
path or uses special input, no need to require current method.
(2) Invoke instructions with HasPcRelativeDexCache() generate code
that reads the PC (call/pop) on x86. However, if the invoke is
an intrinsic that is later replaced with actual code, this PC
reading code may be dead.
Example X86 (before/after):
0x0000108c: 83EC0C sub esp, 12
0x0000108f: 890424 mov [esp], eax <-- not needed
0x00001092:
E800000000 call +0 (0x00001097)
0x00001097: 58 pop eax <-- dead code to read PC
0x00001098:
F30FB8C1 popcnt eax, ecx
0x0000109c:
F30FB8DA popcnt ebx, edx
0x000010a0: 03D8 add ebx, eax
0x000010a2: 89D8 mov eax, ebx
0x000010a4: 83C40C add esp, 12 <-- not needed
0x000010a7: C3 ret
0x0000103c:
F30FB8C1 popcnt eax, ecx
0x00001040:
F30FB8DA popcnt ebx, edx
0x00001044: 03D8 add ebx, eax
0x00001046: 89D8 mov eax, ebx
0x00001048: C3 ret
Example ARM64 (before/after):
0x0000103c:
f81e0fe0 str x0, [sp, #-32]!
0x00001040:
f9000ffe str lr, [sp, #24]
0x00001044:
dac01020 clz x0, x1
0x00001048:
f9400ffe ldr lr, [sp, #24]
0x0000104c:
910083ff add sp, sp, #0x20 (32)
0x00001050:
d65f03c0 ret
0x0000103c:
dac01020 clz x0, x1
0x00001040:
d65f03c0 ret
Change-Id: I8377db80c9a901a08fff4624927cf4a6e585da0c
Vladimir Marko [Thu, 10 Mar 2016 17:11:44 +0000 (17:11 +0000)]
Merge "Add Mips abiflags section to the oatfile."
Roland Levillain [Thu, 10 Mar 2016 17:09:37 +0000 (17:09 +0000)]
Merge "MIPS32: java.lang.Thread, and java.lang.String intrinsics:"