< prev index next >

src/hotspot/share/gc/parallel/psScavenge.cpp

Print this page
rev 49944 : imported patch 8201492-properly-implement-non-contiguous-reference-processing
rev 49945 : imported patch 8201492-stefanj-review

@@ -58,11 +58,12 @@
 #include "services/memoryService.hpp"
 #include "utilities/stack.inline.hpp"
 
 HeapWord*                  PSScavenge::_to_space_top_before_gc = NULL;
 int                        PSScavenge::_consecutive_skipped_scavenges = 0;
-SpanReferenceProcessor*    PSScavenge::_ref_processor = NULL;
+SpanSubjectToDiscoveryClosure PSScavenge::_span_discoverer;
+ReferenceProcessor*           PSScavenge::_ref_processor = NULL;
 PSCardTable*               PSScavenge::_card_table = NULL;
 bool                       PSScavenge::_survivor_overflow = false;
 uint                       PSScavenge::_tenuring_threshold = 0;
 HeapWord*                  PSScavenge::_young_generation_boundary = NULL;
 uintptr_t                  PSScavenge::_young_generation_boundary_compressed = 0;

@@ -764,14 +765,13 @@
   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
          "old above young");
   set_young_generation_boundary(young_gen->eden_space()->bottom());
 
   // Initialize ref handling object for scavenging.
-  MemRegion mr = young_gen->reserved();
-
+  _span_discoverer.set_span(young_gen->reserved());
   _ref_processor =
-    new SpanReferenceProcessor(mr,                         // span
+    new ReferenceProcessor(&_span_discoverer,          // span
                                ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
                                ParallelGCThreads,          // mt processing degree
                                true,                       // mt discovery
                                ParallelGCThreads,          // mt discovery degree
                                true,                       // atomic_discovery
< prev index next >