--- 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) {