src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp

Print this page

        

@@ -794,17 +794,19 @@
          "old above young");
   _young_generation_boundary = young_gen->eden_space()->bottom();
 
   // Initialize ref handling object for scavenging.
   MemRegion mr = young_gen->reserved();
-  _ref_processor = ReferenceProcessor::create_ref_processor(
-    mr,                         // span
+  _ref_processor =
+    new ReferenceProcessor(mr,                         // span
+                           ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
+                           ParallelGCThreads,          // mt processing degree
+                           true,                       // mt discovery
+                           ParallelGCThreads,          // mt discovery degree
     true,                       // atomic_discovery
-    true,                       // mt_discovery
-    NULL,                       // is_alive_non_header
-    ParallelGCThreads,
-    ParallelRefProcEnabled);
+                           NULL,                       // header provides liveness info
+                           false);                     // next field updates do not need write barrier
 
   // Cache the cardtable
   BarrierSet* bs = Universe::heap()->barrier_set();
   assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind");
   _card_table = (CardTableExtension*)bs;