< prev index next >

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

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

*** 154,164 **** } void work(uint worker_id) { ShenandoahHeap* heap = ShenandoahHeap::heap(); ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); ShenandoahObjToScanQueue* q = _cm->get_queue(worker_id); ReferenceProcessor* rp; if (heap->process_references()) { rp = heap->ref_processor(); shenandoah_assert_rp_isalive_installed(); --- 154,164 ---- } void work(uint worker_id) { ShenandoahHeap* heap = ShenandoahHeap::heap(); ShenandoahConcurrentWorkerSession worker_session(worker_id); ! ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahObjToScanQueue* q = _cm->get_queue(worker_id); ReferenceProcessor* rp; if (heap->process_references()) { rp = heap->ref_processor(); shenandoah_assert_rp_isalive_installed();
*** 980,990 **** } if (work == 0) { // No work encountered in current stride, try to terminate. // Need to leave the STS here otherwise it might block safepoints. ! ShenandoahSuspendibleThreadSetLeaver stsl(CANCELLABLE && ShenandoahSuspendibleWorkers); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(heap); if (terminator->offer_termination(&tt)) return; } } --- 980,990 ---- } if (work == 0) { // No work encountered in current stride, try to terminate. // Need to leave the STS here otherwise it might block safepoints. ! ShenandoahSuspendibleThreadSetLeaver stsl(CANCELLABLE); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(heap); if (terminator->offer_termination(&tt)) return; } }
< prev index next >