ab2ce84d4995f05c38c5ebfefc6683b244a36260 |
|
01-Feb-2018 |
Alexey Grebenkin <a.grebenkin@samsung.com> |
Fix dangling SingleImplementations left after class unloading Test: make test-art-host, manual using sample code bug: 73143991 (cherry picked from commit be4c2bd892bd167a50b4dfa7133e70a809197698) Change-Id: I5f4d726334a9ea306d93b967966c58111fd34fd1
|
4557b3858a66aa20e42bce937e1f0620aad880a2 |
|
03-Jan-2018 |
Orion Hodson <oth@google.com> |
ART: Rename Atomic::CompareExchange methods Renames Atomic::CompareExchange methods to Atomic::CompareAndSet equivalents. These methods return a boolean and do not get the witness value. This makes space for Atomic::CompareAndExchange methods in a later commit that will return a boolean and get the witness value. This is pre-work for VarHandle accessors which require both forms. Bug: 65872996 Test: art/test.py --host -j32 Change-Id: I9c691250e5556cbfde7811381b06d2920247f1a1
|
921cb1d8677f4e9e20b978d42f50d4b49bd229d5 |
|
15-Jul-2017 |
Mathieu Chartier <mathieuc@google.com> |
Use class unloading in dex2oat for verify and extract Unload the main classloader in between each dex file compilation to reduce RAM. This frees the whole java heap and associated linear allocs. This is only used for quickening since filters that do compilation may require loaded classes in the compiler and oat writer. This reduces dex2oat peak PSS for compiling a large app from 196MB to 135MB. Only works for verify and extract since the current approach is incompatible with oat writer patching. b/63911263 Added a verification override that reads the compiled class status to avoid ever verifying classes that were quickened (since this is not supported and causes failures). There is still some duplicated verification for some class with superclasses in other dex files. Support for quicken will be added in a follow up CL. (cherry-picked from commit 72041a0dcb5b7c133b79a1d6783a23039f2136bd) Merged-In: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e Bug: 63467744 Bug: 64473133 Test: test-art-host Test: test/testrunner/testrunner.py --interpreter --host -j40 Change-Id: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e
|
72041a0dcb5b7c133b79a1d6783a23039f2136bd |
|
15-Jul-2017 |
Mathieu Chartier <mathieuc@google.com> |
Use class unloading in dex2oat for verify and extract Unload the main classloader in between each dex file compilation to reduce RAM. This frees the whole java heap and associated linear allocs. This is only used for quickening since filters that do compilation may require loaded classes in the compiler and oat writer. This reduces dex2oat peak PSS for compiling a large app from 196MB to 135MB. Only works for verify and extract since the current approach is incompatible with oat writer patching. b/63911263 Added a verification override that reads the compiled class status to avoid ever verifying classes that were quickened (since this is not supported and causes failures). There is still some duplicated verification for some class with superclasses in other dex files. Support for quicken will be added in a follow up CL. Bug: 63467744 Test: test-art-host Test: test/testrunner/testrunner.py --interpreter --host -j40 Change-Id: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e
|
508fdf3eb53824f109c89f98484927085bdc43ba |
|
06-Jun-2017 |
Andreas Gampe <agampe@google.com> |
ART: Small class-inl.h cleanup Remove unnecessary class_linker-inl.h include, and fix up all transitives (mainly gc_root-inl.h). Also clean up reference.h. Test: m test-art-host Change-Id: I47bd6edcfe4a23821e37a6e6fa8cca91d0d2d226
|
fdd513d6c522841e82f1dc144d19a8d60269b9f7 |
|
01-Jun-2017 |
Mathieu Chartier <mathieuc@google.com> |
Move to release CAS for updating object fields Relaxed cas is not sufficient to make sure threads that read the field will see the copied contents of objects. Bug: 37187694 Bug: 62240510 Test: test-art-host (cherry picked from commit a1f20c3f8d0dabb9723acccf3ba760acf3ebe62d) Change-Id: I8bff8a67c2c52eb131714b52e6d842c8c08dd70a
|
a1f20c3f8d0dabb9723acccf3ba760acf3ebe62d |
|
01-Jun-2017 |
Mathieu Chartier <mathieuc@google.com> |
Move to release CAS for updating object fields Relaxed cas is not sufficient to make sure threads that read the field will see the copied contents of objects. Bug: 37187694 Bug: 62240510 Test: test-art-host Change-Id: I1239817e2b63e0e43ac3ae3148b73487408b378b
|
db70ce5e788404f36cb5dbb137c6a8f79f34a2a0 |
|
12-Dec-2016 |
Mathieu Chartier <mathieuc@google.com> |
Address some review comments Addressed comments in dex cache and class table. Added class table test. Test: mm test-art-host-gtest-class_table_test -j20 Change-Id: I3ec0282247187acb1ec7af25b309501f001a1c3e
|
58c3f6a0d15a4340c0a11ab7fbc8c4b990c64b77 |
|
01-Dec-2016 |
Mathieu Chartier <mathieuc@google.com> |
Reduce calls to DescriptorEquals Store the low 3 bits of the descriptor hash inside of class set entries. Compare these bits before comparing descriptors. Simpleperf interpret-only compile of facebook: mirror::Class::DescriptorEquals(char const*): 3.66% -> 1.03% Bug: 32641252 Test: test-art-host Change-Id: I8d898d4ac7c95383c49401fbcd85bfde226e026c
|
aad75c6d5bfab2dc8e30fc99fafe8cd2dc8b74d8 |
|
03-Oct-2016 |
Vladimir Marko <vmarko@google.com> |
Revert "Revert "Store resolved Strings for AOT code in .bss."" Fixed oat_test to keep dex files alive. Fixed mips build. Rewritten the .bss GC root visiting and added write barrier to the artResolveStringFromCode(). Test: build aosp_mips-eng Test: m ART_DEFAULT_GC_TYPE=SS test-art-target-host-gtest-oat_test Test: Run ART test suite on host and Nexus 9. Bug: 20323084 Bug: 30627598 This reverts commit 5f926055cb88089d8ca27243f35a9dfd89d981f0. Change-Id: I07fa2278d82b8eb64964c9a4b66cb93726ccda6b
|
696632e6113a379f24dc6fe4c38e4dee57a249f8 |
|
04-Jun-2016 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Hold dex caches live in class table"" Bug: 29083330 This reverts commit f102faf1bcbdb2149e3e7bf27b1819f621b7894b. (cherry picked from commit c9dbb1df3b5c06ba122cacaf35b17cb53c6be3c6) Change-Id: Ib5d82bde2e4a031c1cab0ea6116925ef99d9f07f
|
6d335635fc8b575261be4a7efea0ea5f4adb9fac |
|
04-Jun-2016 |
Brian Carlstrom <bdc@google.com> |
Revert "Hold dex caches live in class table" This reverts commit d6d49e56c2b7b11f474acb80cb02bb1fe9b7861e. Bug: 29083330 (cherry picked from commit f102faf1bcbdb2149e3e7bf27b1819f621b7894b) Change-Id: Id0c921bd6fe422159f8daa598dc8e7c9ed6eca47
|
c9dbb1df3b5c06ba122cacaf35b17cb53c6be3c6 |
|
04-Jun-2016 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Hold dex caches live in class table"" Bug: 29083330 This reverts commit f102faf1bcbdb2149e3e7bf27b1819f621b7894b. Change-Id: Ibc6d260247b3113beec7d33552061512a36c9ce8
|
f102faf1bcbdb2149e3e7bf27b1819f621b7894b |
|
04-Jun-2016 |
Brian Carlstrom <bdc@google.com> |
Revert "Hold dex caches live in class table" This reverts commit d6d49e56c2b7b11f474acb80cb02bb1fe9b7861e. Bug: 29083330 Change-Id: Ie209b27897b8079f2d13fd0837fe5f83a7e61afc
|
d6d49e56c2b7b11f474acb80cb02bb1fe9b7861e |
|
02-Jun-2016 |
Mathieu Chartier <mathieuc@google.com> |
Hold dex caches live in class table Prevents temporary dex caches being unloaded for the same dex file. Usually this is OK, but if someone resolved a string in that dex cache, it could leave stale pointers in BSS. Also it can use extra memory in linear alloc if we allocate dex cache arrays multiple times. Bug: 29083330 (cherry picked from commit f284d448e3edd428b6ade473d0993028638b2064) Change-Id: Ie1b0b0cf835a998e19227cbb90014011a6cd40c4
|
f284d448e3edd428b6ade473d0993028638b2064 |
|
02-Jun-2016 |
Mathieu Chartier <mathieuc@google.com> |
Hold dex caches live in class table Prevents temporary dex caches being unloaded for the same dex file. Usually this is OK, but if someone resolved a string in that dex cache, it could leave stale pointers in BSS. Also it can use extra memory in linear alloc if we allocate dex cache arrays multiple times. Bug: 29083330 Change-Id: Ia44668f013ceef1f5eb80f653a48d0f8004548c9
|
b8aa1e4c10dcdc7fef96634f87e259dfee83a1cf |
|
05-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Shard classloader classes lock Used to guard adding and removing classes. Previously we used the class linker classes lock, but this had a deadlock issue since the reference processor may need to acquire the lock to mark the classes of a class loader. Another thread could be blocked trying to access weak globals while also holding the class linker classes lock. Bug: 27946564 (cherry picked from commit 1609e3a42051769f4a8be3b6731e7bb2f828b3bb) Change-Id: Ic5cfe573c4e6822d49ad0862ffdd9d036e439a96
|
1609e3a42051769f4a8be3b6731e7bb2f828b3bb |
|
05-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Shard classloader classes lock Used to guard adding and removing classes. Previously we used the class linker classes lock, but this had a deadlock issue since the reference processor may need to acquire the lock to mark the classes of a class loader. Another thread could be blocked trying to access weak globals while also holding the class linker classes lock. Bug: 27946564 Change-Id: If7c13e8775f0912e104d1382eacdba7e7edf6818
|
1aa8ec2ccdd7bedb6d30d91c89f1e94ab23c4439 |
|
01-Feb-2016 |
Mathieu Chartier <mathieuc@google.com> |
Fix up dex cache strings stored in classes Previously we left the image pointer instead of fixing up the pointer to the one in the BSS. This only showed up because JIT does the same as boot image, bypassing null check. Fixed a bug where oat files without embedded dex cache arrays would get their dex cache arrays corrupted. Added a non virtual class visitor for performance. Bug: 26846419 Bug: 22858531 Change-Id: I8cd0d61e440f753b4628ddb8c932eb23a0a81027
|
00310e0bb4ee541b99f0b687dbf5f706db2aabca |
|
17-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Keep dex files live in class table The DexFile.loadClass API allows callers to load classes using a dex file without having that dex file owned by the specified class loader. We now add the dex file to the class table to make sure it stays live until the class loader is unreachable. Fixes interpreter gcstress test 087 with 64 bit. Bug: 22720414 Change-Id: Ia4341149f45b6293312f8b275c7a68cea179f718
|
e4275c07e9852a6944f47efa9d0591fceb8e8e36 |
|
07-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Visit class roots from ClassLoader::VisitReferences This causes the classes of a class loader to get marked when that class loader gets marked instead of during class root visiting. Bug: 22720414 Change-Id: If53f042aff1d9f7bf94ecbe6886601edda029b7d
|