Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8240917

Shenandoah: Avoid scanning thread code roots twice in all root scanner

XMLWordPrintable

    • gc
    • b15

        We can avoid to scan thread code roots if we scan all code roots.

        diff -r a6c70ccaa775 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp
        --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Thu Mar 12 09:23:05 2020 +0900
        +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Wed Mar 11 21:50:02 2020 -0400
        @@ -226,7 +226,6 @@
                  !ShenandoahHeap::heap()->unload_classes() ||
                   ShenandoahHeap::heap()->is_traversal_mode(),
                   "Expect class unloading or traversal when Shenandoah cycle is running");
        - ShenandoahParallelOopsDoThreadClosure tc_cl(oops, code, tc);
           ResourceMark rm;
         
           _serial_roots.oops_do(oops, worker_id);
        @@ -238,13 +237,16 @@
             assert(ShenandoahHeap::heap()->is_concurrent_traversal_in_progress(), "Only possible with traversal GC");
           }
         
        - _thread_roots.threads_do(&tc_cl, worker_id);
        -
           // With ShenandoahConcurrentScanCodeRoots, we avoid scanning the entire code cache here,
           // and instead do that in concurrent phase under the relevant lock. This saves init mark
           // pause time.
           if (code != NULL && !ShenandoahConcurrentScanCodeRoots) {
             _code_roots.code_blobs_do(code, worker_id);
        + ShenandoahParallelOopsDoThreadClosure tc_cl(oops, NULL, tc);
        + _thread_roots.threads_do(&tc_cl, worker_id);
        + } else {
        + ShenandoahParallelOopsDoThreadClosure tc_cl(oops, code, tc);
        + _thread_roots.threads_do(&tc_cl, worker_id);
           }

              zgu Zhengyu Gu
              zgu Zhengyu Gu
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: