src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
changeset 53015 632c4baddbb8
parent 52925 9c18c9d839d3
child 53383 5dc89efc08f0
--- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp	Thu Dec 13 14:36:54 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp	Wed Dec 12 13:50:57 2018 -0500
@@ -498,10 +498,6 @@
   q = queues->claim_next();
   while (q != NULL) {
     if (_heap->check_cancelled_gc_and_yield(sts_yield)) {
-      ShenandoahCancelledTerminatorTerminator tt;
-      ShenandoahEvacOOMScopeLeaver oom_scope_leaver;
-      ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers);
-      while (!terminator->offer_termination(&tt));
       return;
     }
 
@@ -547,17 +543,15 @@
       ShenandoahEvacOOMScopeLeaver oom_scope_leaver;
       ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers);
       ShenandoahTerminationTimingsTracker term_tracker(worker_id);
-      if (terminator->offer_termination()) return;
+      ShenandoahTerminatorTerminator tt(_heap);
+
+      if (terminator->offer_termination(&tt)) return;
     }
   }
 }
 
 bool ShenandoahTraversalGC::check_and_handle_cancelled_gc(ShenandoahTaskTerminator* terminator, bool sts_yield) {
   if (_heap->cancelled_gc()) {
-    ShenandoahCancelledTerminatorTerminator tt;
-    ShenandoahEvacOOMScopeLeaver oom_scope_leaver;
-    ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers);
-    while (! terminator->offer_termination(&tt));
     return true;
   }
   return false;