< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp

Print this page
rev 55339 : 8225582: Shenandoah: Enable concurrent evacuation of JNIHandles and CLDG roots

*** 212,222 **** _terminator(terminator), _heap(ShenandoahHeap::heap()) {} void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); ShenandoahEvacOOMScope oom_evac_scope; ShenandoahTraversalGC* traversal_gc = _heap->traversal_gc(); // Drain all outstanding work in queues. traversal_gc->main_loop(worker_id, _terminator, true); --- 212,222 ---- _terminator(terminator), _heap(ShenandoahHeap::heap()) {} void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahEvacOOMScope oom_evac_scope; ShenandoahTraversalGC* traversal_gc = _heap->traversal_gc(); // Drain all outstanding work in queues. traversal_gc->main_loop(worker_id, _terminator, true);
*** 532,542 **** } if (work == 0) { // No more work, try to terminate ShenandoahEvacOOMScopeLeaver oom_scope_leaver; ! ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(_heap); if (terminator->offer_termination(&tt)) return; } --- 532,542 ---- } if (work == 0) { // No more work, try to terminate ShenandoahEvacOOMScopeLeaver oom_scope_leaver; ! ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(_heap); if (terminator->offer_termination(&tt)) return; }
*** 845,855 **** _rp(rp) {} void work(uint worker_id) { assert(worker_id == 0, "The code below is single-threaded, only one worker is expected"); ShenandoahParallelWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); ShenandoahEvacOOMScope oom_evac_scope; ShenandoahHeap* sh = ShenandoahHeap::heap(); ShenandoahObjToScanQueue* q = sh->traversal_gc()->task_queues()->queue(worker_id); --- 845,855 ---- _rp(rp) {} void work(uint worker_id) { assert(worker_id == 0, "The code below is single-threaded, only one worker is expected"); ShenandoahParallelWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahEvacOOMScope oom_evac_scope; ShenandoahHeap* sh = ShenandoahHeap::heap(); ShenandoahObjToScanQueue* q = sh->traversal_gc()->task_queues()->queue(worker_id);
< prev index next >