diff -r 06cc25fe0ca3 -r 42a3a8941418 src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Thu Oct 17 09:38:32 2019 -0700 +++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Thu Oct 17 13:14:48 2019 -0400 @@ -390,6 +390,7 @@ } _heap->set_concurrent_traversal_in_progress(true); + _heap->set_has_forwarded_objects(true); bool process_refs = _heap->process_references(); if (process_refs) { @@ -601,11 +602,14 @@ TASKQUEUE_STATS_ONLY(_task_queues->reset_taskqueue_stats()); // No more marking expected + _heap->set_concurrent_traversal_in_progress(false); _heap->mark_complete_marking_context(); fixup_roots(); _heap->parallel_cleaning(false); + _heap->set_has_forwarded_objects(false); + // Resize metaspace MetaspaceGC::compute_new_size(); @@ -651,7 +655,6 @@ } assert(_task_queues->is_empty(), "queues must be empty after traversal GC"); - _heap->set_concurrent_traversal_in_progress(false); assert(!_heap->cancelled_gc(), "must not be cancelled when getting out here"); if (ShenandoahVerify) {