5496f69c0a4c2cc357a065f57b7f4ff5d9ad2fa9 |
|
17-Feb-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Disable read barriers in GC VisitReferences calls. It's safe to disable read barriers in the CC collector's VisitReferences calls. It speeds up the collector by some amount, eg. Ritzperf EAAC GC time on N5 decreases by ~4.2%. This is based on Mathieu Chartier's idea. Bug: 12687968 Change-Id: I884dee7018f92761fad54269f4cd01db4fa82f2a
|
e362740479483d4eecfe11cb9ac642401c411cc3 |
|
02-Feb-2016 |
Richard Uhler <ruhler@google.com> |
Fix DCHECK compilation error. Change-Id: I4df32cd13ad1b355302bddce1cb0fc6ff2486abe
|
4a26f17b055cadc949c3e9fdfa637fe5656339d9 |
|
26-Jan-2016 |
Mathieu Chartier <mathieuc@google.com> |
Remove GetImageRoots read barrier for image relocation Fixes CC assertion that failed if an app image was loaded when the GC was running. Bug: 26786304 Change-Id: I47bea7b4b947332b57be2e2db604c2c25d92b7e2
|
a9d82fe8bc6960b565245b920e99107a824ca515 |
|
26-Jan-2016 |
Mathieu Chartier <mathieuc@google.com> |
Use mutator lock to guard adding and removing heap spaces Too hard to add a new lock since dlmalloc ArtMoreCore requires looping through the spaces while holding the allocator lock. Bug: 22858531 Change-Id: Ieac2136da02c766b6795cd604a58798bee37ef2a
|
ed70b4a439acea537d55266bb9b1f309de8cbec9 |
|
18-Nov-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Relax CAS in some uses of Object::AtomicSetReadBarrierPointer. Aside from the call to change the object from gray to black, the CAS in AtomicSetReadBarrierPointer doesn't need to be a release CAS. CC collector Ritz EAAC GC time: 28.4 -> 26.5s (-6.7%) on N5. Bug: 12687968 Change-Id: Ic162717981b98e7f1e762fd6b27bd0c146187ca4
|
763a31ed7a2bfad22a9cb07f5301a71c0f97ca49 |
|
17-Nov-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add immune spaces abstraction ImmuneSpaces is a set of spaces which are not reclaimable by the GC in the current collection. This set of spaces does not have requirements about space adjacency like the old ImmuneRegion. ImmuneSpaces generates the largest immune region for the GC. Since there is no requirement on adjacency, it is possible to have multiple non-adjacent applicaton image files. For image spaces, we also look at the oat code which is normally after the application image. In this case, we add the code as part of the immune region. This is required to have both the boot image and the zygote space be in the same immune region (for performance reasons). Bug: 22858531 Change-Id: I5103b31c0e39ad63c594f5557fc848a3b288b43e
|
073b16c8429d302d5413e8ffc488b03b8f770780 |
|
10-Nov-2015 |
Mathieu Chartier <mathieuc@google.com> |
Image space cleanup for app images Removed Heap::GetImageSpace, added Heap::GetBootImageSpace. Generalized some logic in the class linker for image spaces. Bug: 22858531 Change-Id: Ib3e12bb061a247e232d3dc93b0d6b35eb3a34d25
|
723e6cee35671d2dd9aeb884dd11f6994307c01f |
|
29-Oct-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Minor improvements for the CC collector. - Split Mark() and inline its first part. - Make sure some other routines are inlined. - Add some UNLIKELY's. - Use VisitConcurrentRoots(). Ritz EAAC GC time decreased from 28.9 -> 27.6s (-4.5%) on N5. Bug: 12687968 Change-Id: I7bd13f162e7daa2a5853000fb22c5fefc318994f
|
10d2508b105427ef1bcaf0c222873bae7acc66d3 |
|
29-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Change Checkpoint API to return total number of checkpoints Fixes a race condition with SetStateUnsafe that caused some warnings in the Barrier::~Barrier. The race was: RunCheckpoint sees suspended thread, runs the checkpoint. Inside the checkpoint, the thread state had changed to runnable by SetStateUnsafe. This occasionally caused more Barrier::Pass than expected. The fix is to return the total number of checkpoints instead of just the runnable ones. Bug: 24191051 Change-Id: If15a933ed4c8efa66a5f27cd5feaa2e5957ae804
|
19eab409b3efab3889885b71db708fbe56594088 |
|
24-Oct-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Make the mark stack expandable for the CC collector. Bug: 12687968 Change-Id: I5d05df5524f54c6adb964901e5a963eb042cb2e1
|
fed3e2fd4919b58f8e4f8cbc317ee101f3b9af49 |
|
20-Oct-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Relax some CASes for the CC collector. That is, removing some unnecessary memory fences. We can use the relaxed CAS for the mark bitmap and reference field/GC root updates because only the atomicity of the updated word matters there. We can use the release CAS for the read barrier bits in the lock word because it needs to make sure the reference field updates are visible when the object changes black from gray (the field update stores won't be reordered after the CAS.) The CC collector's Ritz EAAC GC time decreases from 34.7s to 29.1s (-16%) on N5. Bug: 12687968 Change-Id: If082d5911a25fac695df66263a8f55ce8149b199
|
a6b1ead81603513fd40b77fd72f06d8cb1f35276 |
|
06-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Mark breakpoint roots Used to prevent class unloading on methods that have breakpoints. Bug: 22720414 Change-Id: I9aee8bcbfdf253607e89dfc55a50ba3f11d99206
|
fa75518907c2b997770ced9adb34df7c3c4665c4 |
|
01-Oct-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Improvements for table lookup read barriers. - Implement fast paths for the GC root read barrier routines. - Avoid unnecessary CAS operations. Bug: 12687968 Change-Id: Iceef44e253062af5bf2295a521a9c64403deafe1
|
951ec2c93c79c5539cbcc669566f0808d4460338 |
|
22-Sep-2015 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Add one LinearAlloc per ClassLoader"" Issue was fixed by: https://android-review.googlesource.com/#/c/171945/ Bug: 22720414 This reverts commit 7de5dfe37f3cf24e1166412b589f6f67dcd1f1c0.
|
7de5dfe37f3cf24e1166412b589f6f67dcd1f1c0 |
|
22-Sep-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Add one LinearAlloc per ClassLoader" Times out on 32bit target/host for 132-daemon-locks-shutdown test. Bug: 22720414 This reverts commit 356412e2b7ba3fde164bc08a44fee0ddc19c54e1. Change-Id: I5ab3a09e88a5ad8c306a27d2606ecbecc80b9326
|
356412e2b7ba3fde164bc08a44fee0ddc19c54e1 |
|
21-Sep-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add one LinearAlloc per ClassLoader Also added freeing linear alloc and class table when the corresponding class loader is no longer reachable. Bug: 22720414 Change-Id: Icb32c3a4c865f240e147bc87ed080a6b1d8a5795
|
1147b9bd68323c753ed1a0b6106b205fd640c820 |
|
15-Sep-2015 |
Mathieu Chartier <mathieuc@google.com> |
Use image pointer size for profile info May fix some random crashes in dex2oat due to cross compilation. Change-Id: I633652500e8c7dfec38044dffd07eb467973d82a
|
70c08d3c913ce2150cd620ea87b919f8eb5bd953 |
|
11-Sep-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Fix the DequeuePendingReference crash. In DequeuePendingReference, acknowledge a black/white Reference object in the queue if its referent was marked right after it's enqueued. Bug: 12687968 Bug: 23896462 Change-Id: I33c802e04e1688a54a70ad3935628e3853c46e44
|
fdbd13c7af91a042eda753e436eeebf0e1937250 |
|
03-Sep-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Some fixes for the CC collector. - Remove a DCHECK in DisableMarkingCheckpoint, which caused occasional (false) failures. - Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak access. - Add missing BroadcastForNewAllocationRecords and BroadcastForNewWeakBoxedLambdas. The lack of the former caused occasional deadlocks in the ddmc test. - Remove the 'ensure system weaks disallowed' calls, which weren't useful and dead. Bug: 12687968 Change-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8
|
76f55b030d2517d434f227bee2363c3fb760e5c6 |
|
22-Aug-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Synchronize JNI critical calls with the CC collector thread flip. JNI critical calls (like GetArrayElementsCritical) would need to block for the whole GC run to finish if the CC collector GC is ongoing. This CL changes it so that they don't need to block for the GC run, but only for the duration of the thread flip operation, which is much shorter. This is valid due to the to-space invariant. Bug: 12687968 Bug: 19235243 Change-Id: I1b6b4ae4fa539ddc0ec50b10ae8c8709f2a12fe8
|
00370827646cc21cb370c3e7e93f9c0cff4c30c2 |
|
18-Aug-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Use thread-local is_gc_marking flags for the CC collector. The currently global is_marking flag is used to check if the read barrier slow path needs to be taken for GC roots access. Changing it to a thread-local flag simplifies the fast path check and makes it easier to do it in assembly code. It also solves the issue that we need to avoid accessing the global flag during startup before the heap or the collector object isn't allocated and initialized. Bug: 12687968 Change-Id: Ibf0dca12f400bf3490188b12dfe96c7de30583e0
|
059ef3ddb2088f926ac452889e0953fdcd646a5e |
|
18-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Always visit object class from VisitReferences We don't want to unload classes which have instances. Slight increase in CMS GC time from ~6.5s to ~7.3s on EvaluateAndApplyChanges. Bug: 22720414 Change-Id: I467ff9c9d55163d2a90b999aef3bdd7b3f648bac
|
3887c468d731420e929e6ad3acf190d5431e94fc |
|
12-Aug-2015 |
Roland Levillain <rpl@google.com> |
Remove unnecessary `explicit` qualifiers on constructors. Change-Id: Id12e392ad50f66a6e2251a68662b7959315dc567
|
a4f6af9b1e6380b31674d7ac645b1732c846ac06 |
|
12-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Some heap cleanup Bug: 19534862 Change-Id: Ia63f489d26ec8813a263ce877bdbbc8c4e8fe5f4
|
da7c650022a974be10e2f00fa07d5109e3d8826f |
|
24-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Visit class native roots from VisitReferences Visit class roots when we call Class::VisitReferences instead of in the class linker. This makes it easier to implement class unloading since unmarked classes won't have their roots visited by the class linker. Bug: 22181835 Change-Id: I63f31e5ebef7b2a0b764b3ba3cb038b3f561b379
|
90443477f9a0061581c420775ce3b7eeae7468bc |
|
17-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move to newer clang annotations Also enable -Wthread-safety-negative. Changes: Switch to capabilities and negative capabilities. Future work: Use capabilities to implement uninterruptible annotations to work with AssertNoThreadSuspension. Bug: 20072211 Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
|
14d90579f013b374638b599361970557ed4b3f09 |
|
16-Jul-2015 |
Roland Levillain <rpl@google.com> |
Use (D)CHECK_ALIGNED more. Change-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af
|
8118781ebc9659f806716c451bdb3fe9b77ae32b |
|
15-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Address some GC comments Follow-up from: https://android-review.googlesource.com/#/c/159650/ Change-Id: Id14f29b4ce5b70b63fcb3e74f8503ae60a3ae444
|
b19ccb1d88f0bff7371c9b72f265148677c18e95 |
|
15-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Use SuspendAllInternal for FlipThreadRoots Fix FlipThreadRoots to wait until all the threads are suspended by using SuspendAllInternal. Since running threads no longer hold the mutator lock as shared held, doing an exclusive lock will not block if the threads are not suspended. Also implemented MarkHeapReference which is used to preserve soft references. Fixes CC tests. Change-Id: I4b059238f4249cf297e21ae918becd029fe26527
|
97509954404d031594b2ecbda607314d169d512e |
|
13-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Clean up GC callbacks to be virtual methods Change-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735
|
0b71357fb52be9bb06d35396a3042b4381b01041 |
|
17-Jun-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Thread-local mark stacks for the CC collector. Thread-local mark stacks are assigned to mutators where they push references in read barriers to reduce the (CAS) synchronization cost in a global mark stack/queue. We step through three mark stack modes (thread-local, shared, GC-exclusive) and use per-thread flags to disable/enable system weak accesses (only for the CC collector) instead of the existing global one to safely perform the marking phase. The reasons are 1) thread-local mark stacks for mutators need to be revoked using a checkpoint to avoid races (incorrectly leaving a reference on mark stacks) when terminating marking, and 2) we can’t use a checkpoint while system weak accesses are disabled (or a deadlock would happen). More details are described in the code comments. Performance improvements in Ritzperf EAAC: a ~2.8% improvement (13290->12918) in run time and a ~23% improvement (51.6s->39.8s) in the total GC time on N5. Bug: 12687968 Change-Id: I5d234d7e48bf115cd773d38bdb62ad24ce9116c7
|
3cf225386e8129dcbe32b289279ecb87ec255318 |
|
10-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Clean up some includes Change-Id: Ia03a3b54b235df38d5cfe096fef1aebe2b80eb29
|
41656de4b6440bcd1bea5fb785f0710153b2bc68 |
|
07-Jul-2015 |
Man Cao <manc@google.com> |
Fix potential bugs in allocation tracker Add a missing visit allocation records call in concurrent copying collecter. Handle null class objects if we support class unloading, and issues with disallow and allow new allocation records. Bug: 20037135 Change-Id: I59b7321c281e0d79a620501b2f43e36d2a576203
|
46ec520fc2d08e4bb602472406be8fd1ef7ca73c |
|
20-Jun-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Run an empty checkpoint before marking ends in the CC collector. To avoid a race condition between the end of marking and a mutator still in the middle of a read barrier. Bug: 12687968 Bug: 21564728 Change-Id: I4962d895b4df89d2bcde97cbabdb98a14a19dd6b
|
3f64f25151780fdea3511be62b4fe50775f86541 |
|
13-Jun-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Print more diagnosis info on to-space invariant violation. Pass the method/field (in GcRootSource) to the read barrier to print more info when a to-space invariant violation is detected on a method/field GC root access. Refactor ConcurrentCopying::AssertToSpaceInvariant(). Bug: 12687968 Bug: 21564728 Change-Id: I3a5fde1f41969349b0fee6cd9217b948d5241a7c
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|
60f63f53c01cb38ca18a815603282e802a6cf918 |
|
24-Apr-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Use the lock word bits for Baker-style read barrier. This enables the standard object header to be used with the Baker-style read barrier. Bug: 19355854 Bug: 12687968 Change-Id: Ie552b6e1dfe30e96cb1d0895bd0dff25f9d7d015
|
c785344b87221f5e4e6473e5b762e4e61fe65dcf |
|
27-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move ArtField to native Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
|
4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96 |
|
07-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix CC root visiting bug Also some cleanup. Change-Id: Ia3de8f2d409770be3619ec116e8b06ecd82338fe
|
720e71af6c5f92fbcddd0cff5b94d02366b74f89 |
|
07-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add more logging for debugging possible deadlock Change-Id: I4b2db54504d3ed8c2c33a110191488cab1fcb2d9
|
65b798ea10dd716c1bb3dda029f9bf255435af72 |
|
06-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Enable more Clang warnings Change-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c
|
bb87e0f1a52de656bc77cb01cb887e51a0e5198b |
|
03-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Refactor and improve GC root handling Changed GcRoot to use compressed references. Changed root visiting to use virtual functions instead of function pointers. Changed root visting interface to be an array of roots instead of a single root at a time. Added buffered root marking helper to avoid dispatch overhead. Root marking seems a bit faster on EvaluateAndApplyChanges due to batch marking. Pause times unaffected. Mips64 is untested but might work, maybe. Before: MarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us After: MarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us Bug: 19264997 Change-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca
|
4460a84be92b5a94ecfb5c650aef4945ab849c93 |
|
09-Mar-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Rosalloc thread local allocation path without a cas. Speedup on N4: MemAllocTest 3044 -> 2396 (~21% reduction) BinaryTrees 4101 -> 2929 (~26% reduction) Bug: 9986565 Change-Id: Ia1d1a37b9e001f903c3c056e8ec68fc8c623a78b
|
184c9dc3bfc500134fdb2fbea0a7fab290c0abb0 |
|
05-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix some incorrect IsCompiler instead of IsAotCompiler Fixes jdwp related issues (DDMS) when JIT is enabled. Bug: 19623297 Change-Id: I36139c70a97b529135febcf01b227e7ab9affacc
|
e15ea086439b41a805d164d2beb07b4ba96aaa97 |
|
10-Feb-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Reserve bits in the lock word for read barriers. This prepares for the CC collector to use the standard object header model by storing the read barrier state in the lock word. Bug: 19355854 Bug: 12687968 Change-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f
|
dd9943d4466b052ef6c5ee5b32187adb48cbce74 |
|
02-Feb-2015 |
Lei Li <lei.l.li@intel.com> |
ART: checkpoint mechanism optimization GC thread and trim thread are both using checkpoint mechanism. GC thread will request java threads to mark their thread roots by themselves. Trim thread will request java threads to trim their jni local reference tables by themselves. The checkpint mechanism semantics is that the runnable java threads will run checkpoint function itself at safepoint, and finally the java threads and gc thread or trim thread is synchronized via barrier. If the java threads are not runnable, gc thread or trim thread will suspend them and then run their checkpoint functions one by one on behalf of them. If all the java threads are not runnable, then gc thread or trim thread will do all the work itself. In this case, there is no need synchronization. This will save unnecessary synchronization and thread state transitions. Change-Id: If55940946cb3f8b1af42c7237c334f09c8ec7a9f
|
d25f84250700c35f006d5a1d295231af174c3734 |
|
31-Jan-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Clean up enums in RegionSpace. Split enum RegionState into two enums, RegionState and RegionType. Merge the latter with SubSpaceType. Use RefToRegionUnlocked in RegionSpace::AddLiveBytes. Turn some CHECKs into DCHECKs. Improve the Ritz EAAC run time and the GC time by ~20%. Bug: 12687968 Change-Id: Icdb8ab3e9ec2a1eefc8c9a2e4bb19befcf2562a6
|
cb535da36915f9d10bec3880b46f1de1f7a69f22 |
|
23-Jan-2015 |
Mathieu Chartier <mathieuc@google.com> |
Change AtomicStack to use StackReference Previously used Object*, using StackReference saves memory on 64 bit devices. Bug: 12935052 Bug: 17643507 Change-Id: I035878690054eeeb24d655a900b8f26c837703ff
|
2cd334ae2d4287216523882f0d298cf3901b7ab1 |
|
09-Jan-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
More of the concurrent copying collector. Bug: 12687968 Change-Id: I62f70274d47df6d6cab714df95c518b750ce3105
|
d5307ec41c8344be0c32273ec4f574064036187d |
|
28-Mar-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
An empty collector skeleton for a read barrier-based collector. Bug: 12687968 Change-Id: Ic2a3a7b9943ca64e7f60f4d6ed552a316ea4a6f3
|