OSDN Git Service
Jeff Hao [Mon, 4 Aug 2014 21:47:17 +0000 (14:47 -0700)]
Make verifier identify unresolved methods as constructors by <init>.
Check was previously missing brackets in the method name.
Bug:
16560516
Change-Id: I6b28f8413f3d4c14269a6de38731213d7c964af6
Narayan Kamath [Fri, 11 Jul 2014 18:15:11 +0000 (19:15 +0100)]
Fix broken JNI IsAssignableFrom.
The expected argument order was the opposite of what the spec
dictated.
Reported-By: Mikhail Naganov <mnaganov@google.com>
bug:
16531674
(cherry picked from commit
1268b742c8cff7318dc0b5b283cbaeabfe0725ba)
Change-Id: I2b6636998c4e15c1eb10dc96a57940aca56c4d0d
Vladimir Marko [Tue, 29 Jul 2014 11:04:10 +0000 (12:04 +0100)]
Reduce time and memory usage of GVN.
Filter out dead sregs in GVN. Reclaim memory after each LVN
in the GVN modification phase.
Bug:
16398693
(cherry picked from commit
b19955d3c8fbd9588f7e17299e559d02938154b6)
Change-Id: I33c7912258a768b4c99d787056979fbc3b023b3b
Andreas Gampe [Thu, 31 Jul 2014 01:59:05 +0000 (18:59 -0700)]
ART: Fix verifier mishandling erroneous array component types
The verifier must not assume that component types are not erroneous.
Bug:
16661259
(cherry picked from commit
aa910d5ef43256102809e397de305c23f1c315e6)
Change-Id: I6d607310593ac337616581bfdff5eb29a8dd1b9d
Mathieu Chartier [Wed, 30 Jul 2014 21:59:56 +0000 (14:59 -0700)]
Add support for bump pointer spaces to DdmSendHeapSegments.
Added support for bump pointer spaces as well as
differentiating between DlMallocSpaces and RosAllocSpaces.
Added logic to reset the start of next chunk to prevent
inbetween space regions counted as free.
Fixed a debug build bug where we were doing an mprotect after
creating a rosalloc space. In debug builds, this writes a magic
value in the page. This was faulting since it was set to PROT_NONE.
The fix moves the mprotect before the RosAlloc space creation.
Bug:
16408851
(cherry picked from commit
36dab3607e77505ce139eacef1c62a1c4bc4affd)
Change-Id: I5095feb01fa7e248178a2833da7f821f4fd52c89
Jeff Hao [Tue, 29 Jul 2014 01:35:38 +0000 (18:35 -0700)]
Stop thread from reattaching during runtime shutdown while tracing.
Bug:
16024763
(cherry picked from commit
c5d824a20c225763761a6dff43294b229ff35469)
Change-Id: Ideab9adedabf3c58f5162e43e79c72af0642bdfa
Jeff Hao [Wed, 30 Jul 2014 00:59:08 +0000 (00:59 +0000)]
Merge "Submitted wrong changelist!" into lmp-dev
Jeff Hao [Wed, 30 Jul 2014 00:58:19 +0000 (00:58 +0000)]
Submitted wrong changelist!
Revert "Stop thread from reattaching during runtime shutdown while tracing."
This reverts commit
c96657c4243e04888d5948fa023d78cc9213800b.
Change-Id: I859347f93704a94d23f72ef7d483298b08bbed0d
Jeff Hao [Tue, 29 Jul 2014 01:35:38 +0000 (18:35 -0700)]
Stop thread from reattaching during runtime shutdown while tracing.
Bug:
16024763
(cherry picked from commit
c5d824a20c225763761a6dff43294b229ff35469)
Change-Id: Id5dcd4c8a131b93de00023c3ae9f518ea182614a
Andreas Gampe [Tue, 29 Jul 2014 21:45:33 +0000 (14:45 -0700)]
ART: Bump oat version for embedded vtable
Change-Id: Ieb84a8d9486a3d99d48e8395ef3634a365142f2f
Mingyao Yang [Wed, 23 Jul 2014 00:33:25 +0000 (17:33 -0700)]
Fix build, missing spaces around =/<.
(cherry picked from commit
1a12858eb15a14788478c4aca82c052bc84fcafa)
Change-Id: Id2d276cd1fb8bb95c46ff5ceacc7cfe1f5acf192
Mingyao Yang [Wed, 16 Jul 2014 17:44:41 +0000 (10:44 -0700)]
Set vtable in class object to null after linking.
This is follow-up work of embedding imt and vtable for
faster interface/virtual call dispatching.
Once vtable becomes embedded, the original vtable is nulled.
(cherry picked from commit
2cdbad7c62f126581ec5177104de961c4d71adaa)
Change-Id: I6acdcd1ee560d387fb77c55c58bbe3598c197ba1
Jeff Hao [Wed, 30 Jul 2014 00:57:59 +0000 (00:57 +0000)]
Merge "Stop thread from reattaching during runtime shutdown while tracing." into lmp-dev
Andreas Gampe [Tue, 29 Jul 2014 08:22:07 +0000 (01:22 -0700)]
ART: Check for duplicate class definitions in dex file verifier
Reject dex files that try to define two classes with the same type id.
Bug:
16016492
(cherry picked from commit
0ba238dcc21ae3544e1e8cb5d108725db8a1c134)
Change-Id: Ie04a684b41b50313449b87c5c3574e89f800e254
Andreas Gampe [Mon, 28 Jul 2014 20:14:34 +0000 (13:14 -0700)]
ART: Reject array-length on non-reference register
It should be a hard verifier failure if we detect an array-length
instruction over a non-reference-type register.
Bug:
16595896
(cherry picked from commit
65c9db8dfbeea3f708f95f058f4fed7c2af71052)
Change-Id: I56babcbe95d50fd66a132cf4434cf5fa780beb4e
Andreas Gampe [Thu, 24 Jul 2014 03:18:36 +0000 (20:18 -0700)]
ART: Allow arrays with erroneous component type
Array classes must tolerate having component type classes that are
erroneous. Change CreateArrayClass to use LookupClass when FindClass
failed.
Bug:
16019155
(cherry picked from commit
dc13d7df5da49e93963035633a82699c68fa0971)
Change-Id: I506250949a1802898433e9099dcb8ef31dd89659
Andreas Gampe [Sat, 26 Jul 2014 08:40:39 +0000 (01:40 -0700)]
ART: Special-case cb(n)z even for in-reg constant
Call out to OpCmpImmBranch in GenCompareAndBranch if the constant
is zero and we are testing == or !=, even when zero has been loaded
to a register already. This avoids a register size mismatch on 64b
architectures when basically doing a null check, and generally
squashes a cmp + branch to a cbz or cbnz on Arm and Mips. X86 is
not degraded.
Bug:
16562601
(cherry picked from commit
b07c1f9f4d6088ca2d4c1a10819e57b19acf7f22)
Change-Id: I42701e827feb848470aa991297755d808fa0a077
Andreas Gampe [Sat, 26 Jul 2014 04:08:40 +0000 (04:08 +0000)]
Merge "ART: Use array-inl.h in reference_table_test" into lmp-dev
Andreas Gampe [Thu, 17 Jul 2014 21:52:06 +0000 (14:52 -0700)]
ART: Use array-inl.h in reference_table_test
The test allocates arrays, which is an inline definition.
(cherry picked from commit
8db4c882a8d1996852163ebec966c8b4eb1e00df)
Change-Id: I1423c5419949d7c352ed0e614d4f9c5920831deb
Andreas Gampe [Fri, 25 Jul 2014 20:36:56 +0000 (13:36 -0700)]
ART: Clean up API after change 102631
This adds an abort_on_error parameter to GetCurrentMethod, which is
by default true. This restores all previous behavior, except for
monitor installation, where it follows 101639.
Bug:
16556938
(cherry picked from commit
6ec8ebd178ed39aa09e4c7fad194900114c4121a)
Change-Id: I2dee19d30674f2ffda33b3dc963e12470f39edb9
Mathieu Chartier [Fri, 25 Jul 2014 18:50:47 +0000 (11:50 -0700)]
Fix main space memory leak and add checks.
The hypothesis is that we were leaking the main space and its
bitmaps, then eventually we would run out of virtual address space,
which would cause a null bitmap (DCHECK). Finally when we tried
adding the space with a null bitmap to the heap bitmap it segfaulted.
Changed some non performance critical DCHECK -> CHECK.
Bug:
16563323
(cherry picked from commit
2796a1669ae0f3b96db8432fbd8be1b93bf335c4)
Change-Id: Ifa9d866c6c89eff22a547af4db70bc79a77690ed
Mathieu Chartier [Fri, 25 Jul 2014 18:50:34 +0000 (18:50 +0000)]
Merge "Fix dangling pointer bug when transitioning to background." into lmp-dev
Mathieu Chartier [Fri, 25 Jul 2014 17:13:51 +0000 (10:13 -0700)]
Fix dangling pointer bug when transitioning to background.
Dangling pointer left behind from the old rosalloc / dlmalloc
spaces. We now avoid using this pointer by using main_space_
and non_moving_space_ as well as clear the pointer when we remove
the space.
Bug:
16567203
(cherry picked from commit
00b5915828f89daaefd9e8fb215658360f76762c)
Change-Id: I5962929e4a0bb4db6f531d25ee322da7ab3f5dd4
Stephen Hines [Fri, 25 Jul 2014 17:28:14 +0000 (17:28 +0000)]
Merge "Increase limit to 2600 on host clang builds for frame size." into lmp-dev
Stephen Hines [Thu, 24 Jul 2014 02:47:35 +0000 (19:47 -0700)]
Increase limit to 2600 on host clang builds for frame size.
Change-Id: I573e1bcdc7a935145e88077def9c90a5573d2e90
Stephen Hines [Thu, 17 Jul 2014 08:49:18 +0000 (01:49 -0700)]
Update frame-larger-than limit to 2440 for new clang.
Bug:
16362912
The latest version of clang is generating larger frames on elf_writer_quick.cc
and dex2oat.cc than we had previously encountered. This change unblocks the
LLVM rebase temporarily.
Change-Id: I20d9f88959b91e0509e58f01c22532720225f44d
Stephen Hines [Wed, 16 Jul 2014 18:03:43 +0000 (11:03 -0700)]
Add back a deleted check related to verification.
Change-Id: Ib939d1a7395a4b6cc9a7256cfb0a3498ba296744
Stephen Hines [Wed, 16 Jul 2014 04:41:06 +0000 (21:41 -0700)]
Remove errors/warnings from tautological comparisons.
Change-Id: I2728b08d55abccd14c111c6c9da93068d4e14275
Stephen Hines [Fri, 25 Jul 2014 17:28:09 +0000 (17:28 +0000)]
Merge "Update frame-larger-than limit to 2440 for new clang." into lmp-dev
Stephen Hines [Fri, 25 Jul 2014 17:28:04 +0000 (17:28 +0000)]
Merge "Add back a deleted check related to verification." into lmp-dev
Stephen Hines [Fri, 25 Jul 2014 17:27:58 +0000 (17:27 +0000)]
Merge "Remove errors/warnings from tautological comparisons." into lmp-dev
Vladimir Marko [Thu, 24 Jul 2014 16:01:58 +0000 (17:01 +0100)]
Fix JNI compiler frame size adjustments.
Bug:
16321952
(cherry picked from
4e24b9da7c5ea6e517ecdbc09aa14a0995100b7e)
Change-Id: I486b7ad7ebefc7db9b56fe92809ef495c316292b
Andreas Gampe [Fri, 25 Jul 2014 10:07:06 +0000 (03:07 -0700)]
ART: Fix wrong CHECK in GetCurrentLocationForThrow
Under certain circumstances kDexNoIndex is actually an encoded
dex pc. Change the setup of CurrentMethodVisitor to account for that.
Bug:
16556938
(cherry picked from commit
f9df5c1639a9418fcdf70476556a4c30b210701e)
Change-Id: Icb1d42ccd22296e2e0c629ebbd7e4d8c7d87f07a
Andreas Gampe [Thu, 17 Jul 2014 05:20:31 +0000 (22:20 -0700)]
ART: Relax CurrentMethodVisitor requirements on GetDexPC
In case we want to dump a Java stack after an unhandled fault, in
case we hold a thinlocked monitor, that monitor might get inflated.
That can cause an abort as we may not have enough/correct information
for the state at the bottom-most call.
Relax GetDexPc in the CurrentMethodVisitor to not abort when it cannot
find a dex pc. Instead, let the caller handle such a case. This CL
allows the locking_dex_pc_ in Monitor to be DexFile::kDexNoIndex,
which avoids the above abort.
Bug:
16352802,
16556938
(cherry picked from commit
4a8c3fa4bd8d95fac5671ab778dd00b6dc3ec0e4)
Change-Id: I60d3d89603de65752d9230ceac6abb0242388c18
Andreas Gampe [Thu, 24 Jul 2014 22:35:50 +0000 (15:35 -0700)]
ART: Account for multidex location strings in VMClassLoader
To look up resources, look in the unadorned location.
Bug:
16530747
(cherry picked from commit
cb8f9e8a2941971c049b26745ea713c859342d9b)
Change-Id: I5dce30c5e3c9f38fb5436c43a3f4a51fe4062c24
Mathieu Chartier [Thu, 24 Jul 2014 01:45:17 +0000 (18:45 -0700)]
Fix stale remembered sets error.
We were forgetting to remove the remembered set in transition to
background. This resulted in remembered sets being added for
spaces which no longer existed. This finally caused an error when
a new space happened to have the same address as the old space,
resulting in a CHECK failure.
Also tuned the number of ParallelGC to prevent spurrious failures
and removed the ParallelGC from broken tests in the make file.
Bug:
16532086
Bug:
16406852
Change-Id: I00bbcbd7daa03c867732d165be62b72e6c43bce1
(cherry picked from
c5a8347ac491a5f521945d3835a322123830456b)
Sebastien Hertz [Wed, 16 Jul 2014 09:56:07 +0000 (11:56 +0200)]
Fix access to long/double stack values from debugger
Long and double values live in a pair of DEX registers. When we compile DEX
code with the Quick compiler, a DEX register either lives in the stack or is
promoted to a physical register. In the case of a pair of DEX registers, the
Quick compiler assumes both registers live in the same "area": both live in
the stack or both are promoted to physical registers.
From the debugger, we used to access these values by reading/writing each DEX
register separately. However, this does not work when only one DEX register of
a pair is promoted and the other lives in the stack. In this case, the compiled
code reads from/writes to the stack only.
To fix that, the debugger must follow the same rule than the Quick compiler: if
both DEX registers are promoted, read/write them from/to physical registers,
otherwise read/write them from/to the stack. We add StackVisitor:GetVRegPair and
StackVisitor:SetVRegPair for this purpose.
We also follow the same rule when deoptimizing. However we need to do that only
when we know two consecutive DEX registers are part of a pair (long or double).
We know that thanks to the verifier.
Bug:
15527793
(cherry picked from commit
c901dd7bdc80b953d04100ef2f54b8d1ca5f466b)
Change-Id: I981e088295254d75352f83a3e6ba0b292cfe3ed3
Andreas Gampe [Wed, 16 Jul 2014 06:02:11 +0000 (23:02 -0700)]
ART: Refactor GenSelect, refactor gen_common accordingly
This adds a GenSelect method meant for selection of constants. The
general-purpose GenInstanceof code is refactored to take advantage of
this. This cleans up code and squashes a branch-over on ARM64 to a
cset.
Also add a slow-path for type initialization in GenInstanceof.
Bug:
16241558
(cherry picked from commit
90969af6deb19b1dbe356d62fe68d8f5698d3d8f)
Change-Id: Ie4494858bb8c26d386cf2e628172b81bba911ae5
Andreas Gampe [Wed, 23 Jul 2014 22:15:36 +0000 (22:15 +0000)]
Merge "ART: Do not attempt to compile a method with too many registers" into lmp-dev
Andreas Gampe [Fri, 18 Jul 2014 01:04:32 +0000 (18:04 -0700)]
ART: Do not attempt to compile a method with too many registers
The mir_graph has a hard limit on how many ssa registers it can
handle, and will silently fail or fatal out in debug builds when
more SSA registers are necessary. This adds a check in the frontend
that tries to catch some of these cases, and makes the DCHECK a
CHECK to not silently fail.
Bug:
16018097
(cherry picked from commit
0d8ea4661c584fc095129f853d0d72b0fa09cda5)
Change-Id: Iad82178945a8f8c34943cc7573fd73d2b4decade
Mathieu Chartier [Wed, 16 Jul 2014 20:28:58 +0000 (13:28 -0700)]
Recycle mem-maps for collector transitions.
We now create spaces when we need them for collector transitions or
homogeneous compaction by recycling mem maps. Change the bump
pointer space size to be as large as the heap capacity instead of
1/2 heap capacity like it used to be. For GSS, bump pointer spaces
are set to 32MB currently.
Changed GSS to have main space == non moving space since we don't
need to copy from the main space.
Fixes GC stress tests 074, 096.
Fixed test 080 oom throw with -Xmx2m for GC stress test, this was
broken since it was allocating a 4 MB array before starting the
OOM process.
Bug:
14059466
Bug:
16406852
(cherry picked from commit
b363f666883860d40823d5528df3c98c897f74f4)
Change-Id: I62877cfa24ec944a6f34ffac30334f454a8002fd
Mathieu Chartier [Wed, 23 Jul 2014 20:02:30 +0000 (13:02 -0700)]
Revert "Revert "Disable adding main and non moving spaces to immune region in GSS""
This reverts commit
f85c2fb317399ab540854cd7551ac47690366543.
Andreas Gampe [Wed, 23 Jul 2014 22:13:44 +0000 (22:13 +0000)]
Merge "ART: Check high part of dalvik register pairs on put-wide" into lmp-dev
Andreas Gampe [Tue, 22 Jul 2014 05:11:42 +0000 (22:11 -0700)]
ART: Check high part of dalvik register pairs on put-wide
When verifying a put-wide, it is necessary to check the lo and the hi
register for the right type.
Bug:
16018242
(cherry picked from commit
2a593a14e8e0df01a50139e0d48c7be46fb057ef)
Change-Id: I9e661951d592e155e0f281ea959e778d8f4a67ab
Andreas Gampe [Mon, 14 Jul 2014 23:21:44 +0000 (16:21 -0700)]
ART: Throw StackOverflowError in native code
Initialize stack-overflow errors in native code to be able to reduce
the preserved area size of the stack.
Includes a refactoring away from constexpr in instruction_set.h to allow
for easy changing of the values.
Bug:
16256184
(cherry picked from commit
7ea6f79bbddd69d5db86a8656a31aaaf64ae2582)
Change-Id: I117cc8485f43da5f0a470f0f5e5b3dc3b5a06246
Andreas Gampe [Wed, 23 Jul 2014 17:05:02 +0000 (10:05 -0700)]
ART: Fix x86_64 instrumentation_exit, also movsd -> movq
Change movd/movsd to movq.
Bug:
16386215
(cherry picked from commit
fea29016a79f39ac12a4ba4ebdcbc86800c03427)
Change-Id: Icca71ca2aeeb2917aff46043051d6046f04395d4
Jeff Hao [Wed, 23 Jul 2014 01:38:42 +0000 (18:38 -0700)]
Fix x86 instrumentation exit entrypoint and trace size limit.
The x86 instruction movd only copies a 32-bit value when used with a
memory location. movsd properly copies 64-bits.
Bug:
16386215
(cherry picked from commit
cf2e7b0621dfe7fcacd56555dffabab65d1130e7)
Change-Id: I102db8aaa5e8a6b3a88f01e545d1bb51b4f3d5d4
Vladimir Marko [Wed, 23 Jul 2014 15:11:04 +0000 (15:11 +0000)]
Merge "Rewrite topological sort order and improve GVN." into lmp-dev
Vladimir Marko [Thu, 10 Jul 2014 11:42:52 +0000 (12:42 +0100)]
Rewrite topological sort order and improve GVN.
Rewrite the topological sort order to include a full loop
before the blocks that go after the loop. Add a new iterator
class LoopRepeatingTopologicalSortIterator that differs from
the RepeatingTopologicalSortIterator by repeating only loops
and repeating them early. It returns to the loop head if the
head needs recalculation when we reach the end of the loop.
In GVN, use the new loop-repeating topological sort iterator
and for a loop head merge only the preceding blocks' LVNs
if we're not currently recalculating this loop.
Also fix LocalValueNumbering::InPlaceIntersectMaps() which
was keeping only the last element of the intersection, avoid
some unnecessary processing during LVN merge and add some
missing braces to MIRGraph::InferTypeAndSize().
Bug:
16398693
(cherry picked from
55fff044d3a4f7196098e25bab1dad106d9b54a2)
Change-Id: Id7bcd99c8abed1b7500b9ef723313d4c5fc6f1e8
Vladimir Marko [Fri, 11 Jul 2014 13:44:36 +0000 (14:44 +0100)]
Fix null pointer check elimination for catch entries.
Remove the special treatment of catch blocks for null
pointer check elimination and class initialization check
elimination. In both cases this can help optimizing
previously missed cases. In the null check case, this
avoids incorrect optimization as exposed by the new test.
Bug:
16230771
(cherry picked from
0a810d2eab27cd097ebd09a44f0ce83aa608285b)
Change-Id: I0764f47fa0aacfa89904a82e9528177b3ad67e31
Vladimir Marko [Thu, 17 Jul 2014 09:43:08 +0000 (10:43 +0100)]
Use vabs/fabs on arm/arm64 for intrinsic abs().
Bug:
11579369
(cherry picked from
5030d3ee8c6fe10394912ede107cbc8df63b7b16)
Change-Id: I7b0596a8e7e3c87a93b225519c5aeedfe4f22e6d
Mathieu Chartier [Tue, 22 Jul 2014 01:07:54 +0000 (01:07 +0000)]
Merge "Revert "Disable adding main and non moving spaces to immune region in GSS"" into lmp-dev
Mathieu Chartier [Tue, 22 Jul 2014 01:07:36 +0000 (01:07 +0000)]
Revert "Disable adding main and non moving spaces to immune region in GSS"
Bug:
16399257
This reverts commit
be0562fb14e6754ee932b8d9c97e2a6df3a91119.
Change-Id: I29e07a8fa1e972990e5bf1ddf8c9a3538ea5f9cf
Calin Juravle [Thu, 17 Jul 2014 20:14:23 +0000 (21:14 +0100)]
Fix bad comment in class_linker
(cherry picked from commit
ff5a372be9b5ecaa4c3a9887f064a8a98069d036)
Change-Id: I04b2156fbd85929b082097e6faab8097552744c3
Narayan Kamath [Mon, 21 Jul 2014 13:38:53 +0000 (13:38 +0000)]
Merge "Rename openDexFileNative to openDexFile." into lmp-dev
Narayan Kamath [Mon, 21 Jul 2014 13:38:52 +0000 (13:38 +0000)]
Merge "Make ART fail gracefully when it can't update the desired code." into lmp-dev
Andreas Gampe [Fri, 18 Jul 2014 22:41:00 +0000 (15:41 -0700)]
ART: Also accept java.lang.Throwable as a catch-all handler.
Accept catch handlers with catch type of java.lang.Throwable as
catch-all handlers.
(cherry picked from commit
f91baf17ad11a86c84c9fc34ff70feee65a43233)
Bug:
16308310
Change-Id: Ie9b9582ee71c94c82b7695dc6f9c2c6df3d869d8
Andreas Gampe [Fri, 18 Jul 2014 21:06:54 +0000 (21:06 +0000)]
Merge "ART: Improve overflow detection in dex file verifier" into lmp-dev
Andreas Gampe [Fri, 18 Jul 2014 04:49:24 +0000 (21:49 -0700)]
ART: Improve overflow detection in dex file verifier
Overflows were hidden by the design of the checks. Push all range
checks as lists, so we can explicitly check against the count.
(cherry picked from commit
50d1bc198b2e347d60df74c3b0c452e1f929dd2f)
Bug:
16017886
Change-Id: I0083f83006ef1e55518b0919dff319004b66dcb8
Dave Allison [Fri, 11 Jul 2014 17:11:58 +0000 (17:11 +0000)]
Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86""""
This reverts commit
0025a86411145eb7cd4971f9234fc21c7b4aced1.
Bug:
16256184
Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73
Conflicts:
compiler/dex/quick/arm64/target_arm64.cc
compiler/image_test.cc
runtime/fault_handler.cc
Calin Juravle [Wed, 16 Jul 2014 13:45:03 +0000 (14:45 +0100)]
Make ART fail gracefully when it can't update the desired code.
ART was exiting with a fatal error when it couldn't clean an obsolete
file. Relaxing this and failing gracefully preserves the behaviour that
Dalvik had.
Bug:
15313272
(cherry picked from commit
c54aea7f4acd1a32bb298d43c20e3e0217638926)
Change-Id: I862a8925a0edd6370e94af8fa984a64099240029
Andreas Gampe [Fri, 18 Jul 2014 17:13:37 +0000 (17:13 +0000)]
Merge "ART: Fail dex file verification on invalid access flags" into lmp-dev
Andreas Gampe [Fri, 18 Jul 2014 02:26:50 +0000 (19:26 -0700)]
ART: Fail dex file verification on invalid access flags
Only allow standard java access flags in class-def items.
(cherry picked from commit
acc2bb693d83102f93007d7c4881a94bbcc3b9bb)
Bug:
16018234
Change-Id: I54e788817d5974faf7b3841cd01b9ca4568249c1
Narayan Kamath [Fri, 18 Jul 2014 16:01:16 +0000 (16:01 +0000)]
Merge "Fix identifier size in the heap dump." into lmp-dev
Vladimir Marko [Thu, 17 Jul 2014 19:50:07 +0000 (20:50 +0100)]
Fix GVN to handle normal paths leading to catch entry.
When the catch block is empty, the catch entry is actually
the normal path block after the try block. Fix the LVN
merge for catch entries that didn't expect it during GVN.
Bug:
16360024
(cherry-picked from
11ca61259be6ec8e03eaff1e98905232728b3d45)
Change-Id: Ifc771edfec702ab2f0ff50bf7f8e69c846d13a46
Calin Juravle [Fri, 4 Jul 2014 15:24:03 +0000 (16:24 +0100)]
Fix identifier size in the heap dump.
We're using addresses as IDs and previously we would have written
sizeof(void*) as the identifier size in the header. Heap references
are actually uint32_t so writting 4 bytes should be enough.
Bug:
16016862
(cherry picked from commit
3280517651195602253ed92a2749964e96cad27e)
Change-Id: I8b8a0f8d761314139ba01a8bc91c1a3db35b8ae9
Ian Rogers [Fri, 18 Jul 2014 02:26:54 +0000 (02:26 +0000)]
Merge "Avoid race in single thread suspension." into lmp-dev
Ian Rogers [Fri, 18 Jul 2014 01:52:42 +0000 (18:52 -0700)]
Avoid race in single thread suspension.
Don't allow more than one concurrent single thread suspension to avoid
potential cycles and deadlocks where threads try to suspend each other.
Bug:
16364458,
16354227
(cherry picked from commit
f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9)
Change-Id: I907f1d5591a6aa5c241d37d6b4a34f968f98df77
Andreas Gampe [Thu, 17 Jul 2014 23:13:35 +0000 (16:13 -0700)]
ART: Make a soft failure in method verifier hard, add check
Make the soft error of using a primitive type in an instanceof a
hard verifier error.
Add a check when doing check_cast peep-hole optimization to check
whether the cast type is valid.
(cherry picked from commit
00633eb490ad21f711dcfccfb3a70992b2f8a72a)
Bug:
16020300
Change-Id: Icaea560d17804f24a13dc09c115e9ec7039cb472
Andreas Gampe [Thu, 17 Jul 2014 07:12:32 +0000 (00:12 -0700)]
ART: Lock an arg reg in GenInlinedGet
Must lock an explicit target register so that it doesn't get used
for a temp and clobbered.
Bug:
16352802
(cherry picked from commit
30ab8a8a6597962adf63f3a438ec34b754cc117e)
Change-Id: Ie478ee42732d439c2a41aac48d15e3c2e71e3fee
Fred Shih [Fri, 11 Jul 2014 16:59:27 +0000 (09:59 -0700)]
Revert "Revert "Revert "Revert "Add intrinsic for Reference.get()""""
Fixed TargetReg issue causing build failure for x86.
This reverts commit
9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f.
(cherry picked from commit
4ee7a665e7f9cd2c5ace2d6304e33f64067b209f)
Change-Id: I555f4e06955711262e6b37ffbeabee9698ec695c
Sebastien Hertz [Wed, 16 Jul 2014 18:00:11 +0000 (20:00 +0200)]
Fix class initialization checks in interpreter
Check field's class initialization after handling null pointer exception.
Bug:
16324235
(cherry picked from commit
1edbd8e5405486a96d69481f5f30a8ca16d510b5)
Change-Id: I31ef07a08ff70c5695dda1079afea5b2579bb8e3
Mathieu Chartier [Mon, 14 Jul 2014 21:57:16 +0000 (14:57 -0700)]
Disable adding main and non moving spaces to immune region in GSS
Disabled adding the main and non moving space to the immune region.
This will enable us to recycle bump pointer spaces for malloc space
-> malloc space compaction as well as collector transitions.
Also added logic for falling back to the non moving space, we may
copy objects there.
Refactored mod union table logic into MarkReachableObjects.
No measurable performance benefit or regression.
Bug:
14059466
Bug:
16291259
(cherry picked from commit
4c13a3ff475f206c4d0a86ee2595c45392fd942f)
Change-Id: I858b4fbddca888e164052ad247565a0bdbea68b5
Calin Juravle [Wed, 16 Jul 2014 16:55:55 +0000 (17:55 +0100)]
Rename openDexFileNative to openDexFile.
We no longer need two distinct methods.
Bug:
15563230
Change-Id: I71ae9e32da18fe1e6a06879579b53e11d29e98f7
Mathieu Chartier [Wed, 16 Jul 2014 01:10:25 +0000 (18:10 -0700)]
Use sched_yield in Monitor::MonitorEnter.
Previously we used NanoSleep(1000), but this was unreliable. It could
result in waiting for >= 40ms instead of 1us. Since this was in a loop
it was especially bad if the GC was trying to suspend all the
threads when we were sleeping. This resulted in thread suspension
occasionally taking longer than a second.
Results on the provided picasso-sample app on Nexus 5:
Longest GC pause before: ~1.5s.
Longest GC pause after: <5ms.
Also added a warning if thread suspension takes longer than a
threshold (currently 5ms).
Bug:
16307460
External bug: https://code.google.com/p/android-developer-preview/issues/detail?id=367
(cherry picked from commit
251755cd511463260e60be98bf138b6aa1c14bf3)
Change-Id: I491c0799cc23ee6e68abc1bf77d1f0f4263e8ef5
Mathieu Chartier [Mon, 14 Jul 2014 17:16:05 +0000 (10:16 -0700)]
Fix infinite loop when calling SetStatus after OOM.
There was a problem where we would call SetStatus when we had an OOM
error. This results in attempting to find the ExceptionInInitializer
class which if not loaded does more allocations resulting in an
infinite loop.
Also some cleanup addressing other comments.
Bug:
16082350
(cherry picked from commit
fd22d5bada15d95b5ea8ab5a4dda39077e1a54ee)
Change-Id: Ie291eb0f52ba9c63f24591fae691dd9f393e6ccb
Andreas Gampe [Sat, 12 Jul 2014 21:15:15 +0000 (21:15 +0000)]
am
0b316726: am
cf90ba7e: Merge "ART: Add another special case to GenSelect for ARM64"
* commit '
0b3167265ee9d75daca62f0014c47cb962b443f3':
ART: Add another special case to GenSelect for ARM64
Andreas Gampe [Sat, 12 Jul 2014 21:10:53 +0000 (21:10 +0000)]
am
cf90ba7e: Merge "ART: Add another special case to GenSelect for ARM64"
* commit '
cf90ba7ebe00346651f3b7ce1e5b1f785f7caabd':
ART: Add another special case to GenSelect for ARM64
Andreas Gampe [Sat, 12 Jul 2014 20:45:59 +0000 (20:45 +0000)]
am
ccdaa5ea: am
6ef2aa67: Merge "ART: Rework TargetReg(symbolic_reg, wide)"
* commit '
ccdaa5eac1165ac06c6414db8dac961c4b6444fe':
ART: Rework TargetReg(symbolic_reg, wide)
Andreas Gampe [Sat, 12 Jul 2014 20:42:11 +0000 (20:42 +0000)]
am
6ef2aa67: Merge "ART: Rework TargetReg(symbolic_reg, wide)"
* commit '
6ef2aa67656cf8e67bbd6f0f4aec0402d7158297':
ART: Rework TargetReg(symbolic_reg, wide)
Ian Rogers [Sat, 12 Jul 2014 19:47:49 +0000 (19:47 +0000)]
am
87354a55: am
3b7da819: Merge "ART: Correct disassembling of regs from opcodes"
* commit '
87354a55df2ec985e1e4d27ac69868ec0c102c0b':
ART: Correct disassembling of regs from opcodes
Ian Rogers [Sat, 12 Jul 2014 19:44:47 +0000 (19:44 +0000)]
am
3b7da819: Merge "ART: Correct disassembling of regs from opcodes"
* commit '
3b7da819adb3b3f166e5970b6f5778415c84c3e9':
ART: Correct disassembling of regs from opcodes
Andreas Gampe [Sat, 12 Jul 2014 13:08:43 +0000 (13:08 +0000)]
am
949e5980: am
b7e78cb6: Merge "AArch64: Fix and enable reverseBytes intrinsic."
* commit '
949e598017d57c4ba3bd4470b0bd27fc5ca18a17':
AArch64: Fix and enable reverseBytes intrinsic.
Andreas Gampe [Sat, 12 Jul 2014 13:08:42 +0000 (13:08 +0000)]
am
c8cd6926: am
5727339f: Merge "Aarch64: easy division and remainder for long ints."
* commit '
c8cd6926b4ac64e10b6a630491da3f6206a1e192':
Aarch64: easy division and remainder for long ints.
Andreas Gampe [Sat, 12 Jul 2014 13:08:42 +0000 (13:08 +0000)]
am
c76192c5: am
7aab9879: Merge "ART: Fuse compare-with-0-and-branch in Arm64 utils-assembler"
* commit '
c76192c58903d80f45feac65c186a314a5aeaf10':
ART: Fuse compare-with-0-and-branch in Arm64 utils-assembler
Andreas Gampe [Sat, 12 Jul 2014 13:08:41 +0000 (13:08 +0000)]
am
7d76f600: am
0f73aa8f: Merge "Update counting VR for promotion"
* commit '
7d76f6001cfc8877eebf122ca3c58b4203754715':
Update counting VR for promotion
Andreas Gampe [Sat, 12 Jul 2014 12:59:31 +0000 (12:59 +0000)]
am
b7e78cb6: Merge "AArch64: Fix and enable reverseBytes intrinsic."
* commit '
b7e78cb6bdc57f2beaa8bccf383289ebdd53e552':
AArch64: Fix and enable reverseBytes intrinsic.
Andreas Gampe [Sat, 12 Jul 2014 12:59:30 +0000 (12:59 +0000)]
am
5727339f: Merge "Aarch64: easy division and remainder for long ints."
* commit '
5727339f61b016d012fc91c5df3eb8eb3f3e0066':
Aarch64: easy division and remainder for long ints.
Andreas Gampe [Sat, 12 Jul 2014 12:59:30 +0000 (12:59 +0000)]
am
7aab9879: Merge "ART: Fuse compare-with-0-and-branch in Arm64 utils-assembler"
* commit '
7aab98798ad676d7ede05b25bcff946a6550868c':
ART: Fuse compare-with-0-and-branch in Arm64 utils-assembler
Andreas Gampe [Sat, 12 Jul 2014 12:59:29 +0000 (12:59 +0000)]
am
0f73aa8f: Merge "Update counting VR for promotion"
* commit '
0f73aa8f64417232e3f3d09e53f49084d2783fe0':
Update counting VR for promotion
Andreas Gampe [Sat, 12 Jul 2014 03:28:48 +0000 (03:28 +0000)]
am
c9ffb3d2: am
bc9127a5: Merge "AArch64: Fix def use."
* commit '
c9ffb3d225b14d1932c45d58abacd7fa3b43e612':
AArch64: Fix def use.
Andreas Gampe [Sat, 12 Jul 2014 03:24:32 +0000 (03:24 +0000)]
am
bc9127a5: Merge "AArch64: Fix def use."
* commit '
bc9127a5d451058aede5562e2b015caec618d008':
AArch64: Fix def use.
Andreas Gampe [Sat, 12 Jul 2014 03:22:40 +0000 (03:22 +0000)]
am
0c96b613: am
0ee33c32: Merge "Revert "Revert "ART: Key-Value Store in Oat header"""
* commit '
0c96b6132a2837c584827d7a46ba4775f6480a6d':
Revert "Revert "ART: Key-Value Store in Oat header""
Andreas Gampe [Sat, 12 Jul 2014 03:18:36 +0000 (03:18 +0000)]
am
0ee33c32: Merge "Revert "Revert "ART: Key-Value Store in Oat header"""
* commit '
0ee33c32388f49853b7f7003047047d7f9e9cb75':
Revert "Revert "ART: Key-Value Store in Oat header""
Mathieu Chartier [Sat, 12 Jul 2014 02:06:23 +0000 (02:06 +0000)]
am
3ad68036: am
8c472818: Merge "ART: Compacting ROS/DlMalloc spaces with semispace copy GC"
* commit '
3ad680365a725aa092e9920f43ffd07807d12d09':
ART: Compacting ROS/DlMalloc spaces with semispace copy GC
Hans Boehm [Sat, 12 Jul 2014 02:06:22 +0000 (02:06 +0000)]
am
d8bb797b: am
9531f62e: Merge "Call strong CAS from unsafe. Add more CAS versions."
* commit '
d8bb797bbcbe12c330d86109d8747ecb1f89341a':
Call strong CAS from unsafe. Add more CAS versions.
Ian Rogers [Sat, 12 Jul 2014 02:06:21 +0000 (02:06 +0000)]
am
f42f7cf6: am
f08f0ca4: Merge "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable"
* commit '
f42f7cf641e82fd37442c84fa2672eddd4024f0b':
Improve performance of invokevirtual/invokeinterface with embedded imt/vtable
Andreas Gampe [Sat, 12 Jul 2014 02:06:20 +0000 (02:06 +0000)]
am
e47725d4: am
3d71f321: Merge "ART: Change GenPCUseDefEncoding(), turn on Load Hoisting for ARM64"
* commit '
e47725d4359d9ee14d3392f4d490cc9a95a3f203':
ART: Change GenPCUseDefEncoding(), turn on Load Hoisting for ARM64
Hans Boehm [Sat, 12 Jul 2014 02:06:20 +0000 (02:06 +0000)]
am
6a4d88c2: am
aebf3cda: Merge "Replace memory barriers to better reflect Java needs."
* commit '
6a4d88c23bfbe3a6584476cd5a5111978c1dccca':
Replace memory barriers to better reflect Java needs.
Mathieu Chartier [Sat, 12 Jul 2014 02:06:19 +0000 (02:06 +0000)]
am
9cc96ba8: am
2751ffbe: Merge "Faster TLAB allocator."
* commit '
9cc96ba87893540fd58bc5085591f524a706a8b3':
Faster TLAB allocator.