src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-gc9 Sdiff src/share/vm/gc_implementation/parallelScavenge

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

Print this page
rev 6446 : [mq]: ref-write-new-fix


 847   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 848 
 849   PSYoungGen* young_gen = heap->young_gen();
 850   PSOldGen* old_gen = heap->old_gen();
 851 
 852   // Set boundary between young_gen and old_gen
 853   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
 854          "old above young");
 855   set_young_generation_boundary(young_gen->eden_space()->bottom());
 856 
 857   // Initialize ref handling object for scavenging.
 858   MemRegion mr = young_gen->reserved();
 859 
 860   _ref_processor =
 861     new ReferenceProcessor(mr,                         // span
 862                            ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
 863                            (int) ParallelGCThreads,    // mt processing degree
 864                            true,                       // mt discovery
 865                            (int) ParallelGCThreads,    // mt discovery degree
 866                            true,                       // atomic_discovery
 867                            NULL,                       // header provides liveness info
 868                            false);                     // next field updates do not need write barrier
 869 
 870   // Cache the cardtable
 871   BarrierSet* bs = Universe::heap()->barrier_set();
 872   assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind");
 873   _card_table = (CardTableExtension*)bs;
 874 
 875   _counters = new CollectorCounters("PSScavenge", 0);
 876 }


 847   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 848 
 849   PSYoungGen* young_gen = heap->young_gen();
 850   PSOldGen* old_gen = heap->old_gen();
 851 
 852   // Set boundary between young_gen and old_gen
 853   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
 854          "old above young");
 855   set_young_generation_boundary(young_gen->eden_space()->bottom());
 856 
 857   // Initialize ref handling object for scavenging.
 858   MemRegion mr = young_gen->reserved();
 859 
 860   _ref_processor =
 861     new ReferenceProcessor(mr,                         // span
 862                            ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
 863                            (int) ParallelGCThreads,    // mt processing degree
 864                            true,                       // mt discovery
 865                            (int) ParallelGCThreads,    // mt discovery degree
 866                            true,                       // atomic_discovery
 867                            NULL);                      // header provides liveness info

 868 
 869   // Cache the cardtable
 870   BarrierSet* bs = Universe::heap()->barrier_set();
 871   assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind");
 872   _card_table = (CardTableExtension*)bs;
 873 
 874   _counters = new CollectorCounters("PSScavenge", 0);
 875 }
src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File