< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp

Print this page
rev 50076 : Fold Partial GC into Traversal GC

@@ -23,10 +23,12 @@
 
 #include "precompiled.hpp"
 #include "logging/logStream.hpp"
 #include "gc/shenandoah/shenandoahFreeSet.hpp"
 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
+#include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
+#include "gc/shenandoah/shenandoahTraversalGC.hpp"
 
 ShenandoahFreeSet::ShenandoahFreeSet(ShenandoahHeap* heap, size_t max_regions) :
   _heap(heap),
   _mutator_free_bitmap(max_regions, mtGC),
   _collector_free_bitmap(max_regions, mtGC),

@@ -181,11 +183,12 @@
       case ShenandoahHeap::_alloc_shared_gc:
         if (_heap->is_concurrent_traversal_in_progress()) {
           // We're updating TAMS for evacuation-allocs, such that we will not
           // treat evacuated objects as implicitely live and traverse through them.
           // See top of shenandoahTraversal.cpp for an explanation.
-          _heap->set_next_top_at_mark_start(r->bottom(), r->end());
+          _heap->set_next_top_at_mark_start(r->bottom(), r->top());
+          _heap->traversal_gc()->traversal_set()->add_region_check_for_duplicates(r);
           OrderAccess::fence();
         }
         break;
       case ShenandoahHeap::_alloc_tlab:
       case ShenandoahHeap::_alloc_shared:
< prev index next >