RFR (XS) 8246433: Shenandoah: walk roots in more efficient order in ShenandoahRootUpdater
Zhengyu Gu
zgu at redhat.com
Wed Jun 3 12:01:38 UTC 2020
Looks good.
-Zhengyu
On 6/3/20 6:45 AM, Aleksey Shipilev wrote:
> RFE:
> https://bugs.openjdk.java.net/browse/JDK-8246433
>
> Missed the spot in ShenandoahRootUpdater while doing JDK-8246100.
>
> Fix:
>
> diff -r d0d06b8be678 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Fri May 29 11:58:00
> 2020 +0200
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Wed Jun 03 12:44:47
> 2020 +0200
> @@ -237,18 +237,21 @@
> static_cast<CodeBlobToOopClosure*>(&blobs_and_disarm_Cl) :
> static_cast<CodeBlobToOopClosure*>(&update_blobs);
>
> CLDToOopClosure clds(keep_alive, ClassLoaderData::_claim_strong);
>
> + // Process serial-claiming roots first
> _serial_roots.oops_do(keep_alive, worker_id);
> + _serial_weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
> +
> + // Process light-weight/limited parallel roots then
> _vm_roots.oops_do(keep_alive, worker_id);
> + _weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
> + _dedup_roots.oops_do(is_alive, keep_alive, worker_id);
> + _cld_roots.cld_do(&clds, worker_id);
>
> - _cld_roots.cld_do(&clds, worker_id);
> + // Process heavy-weight/fully parallel roots the last
> _code_roots.code_blobs_do(codes_cl, worker_id);
> _thread_roots.oops_do(keep_alive, NULL, worker_id);
> -
> - _serial_weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
> - _weak_roots.weak_oops_do(is_alive, keep_alive, worker_id);
> - _dedup_roots.oops_do(is_alive, keep_alive, worker_id);
> }
>
> #endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_INLINE_HPP
>
> Testing: hotspot_gc_shenandoah
>
More information about the shenandoah-dev
mailing list