--- old/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp 2019-06-14 16:50:52.922647071 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp 2019-06-14 16:50:52.577646548 -0400 @@ -156,7 +156,7 @@ void work(uint worker_id) { ShenandoahHeap* heap = ShenandoahHeap::heap(); ShenandoahConcurrentWorkerSession worker_session(worker_id); - ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); + ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahObjToScanQueue* q = _cm->get_queue(worker_id); ReferenceProcessor* rp; if (heap->process_references()) { @@ -982,7 +982,7 @@ 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); + ShenandoahSuspendibleThreadSetLeaver stsl(CANCELLABLE); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(heap); if (terminator->offer_termination(&tt)) return; --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2019-06-14 16:50:53.749648322 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp 2019-06-14 16:50:53.401647796 -0400 @@ -949,7 +949,7 @@ void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); - ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); + ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahEvacOOMScope oom_evac_scope; do_work(); } else { @@ -1872,7 +1872,6 @@ jbyte prev = _cancelled_gc.cmpxchg(CANCELLED, CANCELLABLE); if (prev == CANCELLABLE) return true; else if (prev == CANCELLED) return false; - assert(ShenandoahSuspendibleWorkers, "should not get here when not using suspendible workers"); assert(prev == NOT_CANCELLED, "must be NOT_CANCELLED"); { // We need to provide a safepoint here, otherwise we might @@ -2086,7 +2085,7 @@ void work(uint worker_id) { if (_concurrent) { ShenandoahConcurrentWorkerSession worker_session(worker_id); - ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); + ShenandoahSuspendibleThreadSetJoiner stsj; do_work(); } else { ShenandoahParallelWorkerSession worker_session(worker_id); @@ -2286,15 +2285,11 @@ } void ShenandoahHeap::safepoint_synchronize_begin() { - if (ShenandoahSuspendibleWorkers || UseStringDeduplication) { - SuspendibleThreadSet::synchronize(); - } + SuspendibleThreadSet::synchronize(); } void ShenandoahHeap::safepoint_synchronize_end() { - if (ShenandoahSuspendibleWorkers || UseStringDeduplication) { - SuspendibleThreadSet::desynchronize(); - } + SuspendibleThreadSet::desynchronize(); } void ShenandoahHeap::vmop_entry_init_mark() { --- old/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2019-06-14 16:50:54.582649584 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp 2019-06-14 16:50:54.241649068 -0400 @@ -187,7 +187,7 @@ } inline bool ShenandoahHeap::check_cancelled_gc_and_yield(bool sts_active) { - if (! (sts_active && ShenandoahSuspendibleWorkers)) { + if (!sts_active) { return cancelled_gc(); } --- old/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp 2019-06-14 16:50:55.367650773 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp 2019-06-14 16:50:55.034650269 -0400 @@ -214,7 +214,7 @@ void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); - ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); + ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahEvacOOMScope oom_evac_scope; ShenandoahTraversalGC* traversal_gc = _heap->traversal_gc(); @@ -534,7 +534,7 @@ if (work == 0) { // No more work, try to terminate ShenandoahEvacOOMScopeLeaver oom_scope_leaver; - ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers); + ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(_heap); @@ -847,7 +847,7 @@ 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); + ShenandoahSuspendibleThreadSetJoiner stsj; ShenandoahEvacOOMScope oom_evac_scope; ShenandoahHeap* sh = ShenandoahHeap::heap(); --- old/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp 2019-06-14 16:50:56.177652000 -0400 +++ new/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp 2019-06-14 16:50:55.835651482 -0400 @@ -343,9 +343,6 @@ "definitely alive references to avoid dealing with them during " \ "pause.") \ \ - experimental(bool, ShenandoahSuspendibleWorkers, false, \ - "Suspend concurrent GC worker threads at safepoints") \ - \ diagnostic(bool, ShenandoahSATBBarrier, true, \ "Turn on/off SATB barriers in Shenandoah") \ \ --- old/test/hotspot/jtreg/gc/shenandoah/TestAllocObjects.java 2019-06-14 16:50:56.954653177 -0400 +++ new/test/hotspot/jtreg/gc/shenandoah/TestAllocObjects.java 2019-06-14 16:50:56.621652673 -0400 @@ -45,12 +45,6 @@ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=static TestAllocObjects * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=compact TestAllocObjects * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=traversal TestAllocObjects - * - * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=adaptive -XX:+ShenandoahSuspendibleWorkers TestAllocObjects - * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=static -XX:+ShenandoahSuspendibleWorkers TestAllocObjects - * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=compact -XX:+ShenandoahSuspendibleWorkers TestAllocObjects - * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=traversal -XX:+ShenandoahSuspendibleWorkers TestAllocObjects - * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -Xms1g -XX:ShenandoahGCHeuristics=aggressive -XX:+ShenandoahSuspendibleWorkers TestAllocObjects */ import java.util.Random;