Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
Merge
  • Loading branch information
pconcannon committed Mar 12, 2020
2 parents 0ed44d0 + 71e1277 commit de5208e3c0ed2772b6a493fb6bf3e86eb8dbe3f4
Showing with 5 additions and 3 deletions.
  1. +5 −3 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp
@@ -226,7 +226,6 @@ void ShenandoahRootScanner<ITR>::roots_do(uint worker_id, OopClosure* oops, CLDC
!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 @@ void ShenandoahRootScanner<ITR>::roots_do(uint worker_id, OopClosure* oops, CLDC
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);
}

AlwaysTrueClosure always_true;

0 comments on commit de5208e

Please sign in to comment.