--- 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;