src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
changeset 58674 42a3a8941418
parent 58543 a7a606f6311c
child 58679 9c3209ff7550
child 58686 0279391875bf
--- 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) {