< prev index next >

src/hotspot/share/gc/serial/defNewGeneration.cpp

Print this page

        

@@ -90,12 +90,12 @@
 void DefNewGeneration::FastKeepAliveClosure::do_oop(oop* p)       { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
 void DefNewGeneration::FastKeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
 
 DefNewGeneration::FastEvacuateFollowersClosure::
 FastEvacuateFollowersClosure(SerialHeap* heap,
-                             FastScanClosure* cur,
-                             FastScanClosure* older) :
+                             DefNewScanClosure* cur,
+                             DefNewYoungerGenClosure* older) :
   _heap(heap), _scan_cur_or_nonheap(cur), _scan_older(older)
 {
 }
 
 void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {

@@ -103,16 +103,10 @@
     _heap->oop_since_save_marks_iterate(_scan_cur_or_nonheap, _scan_older);
   } while (!_heap->no_allocs_since_save_marks());
   guarantee(_heap->young_gen()->promo_failure_scan_is_complete(), "Failed to finish scan");
 }
 
-FastScanClosure::FastScanClosure(DefNewGeneration* g, bool gc_barrier) :
-    OopsInClassLoaderDataOrGenClosure(g), _g(g), _gc_barrier(gc_barrier)
-{
-  _boundary = _g->reserved().end();
-}
-
 void CLDScanClosure::do_cld(ClassLoaderData* cld) {
   NOT_PRODUCT(ResourceMark rm);
   log_develop_trace(gc, scavenge)("CLDScanClosure::do_cld " PTR_FORMAT ", %s, dirty: %s",
                                   p2i(cld),
                                   cld->loader_name_and_id(),

@@ -568,20 +562,20 @@
   heap->rem_set()->prepare_for_younger_refs_iterate(false);
 
   assert(heap->no_allocs_since_save_marks(),
          "save marks have not been newly set.");
 
-  FastScanClosure fsc_with_no_gc_barrier(this, false);
-  FastScanClosure fsc_with_gc_barrier(this, true);
+  DefNewScanClosure       scan_closure(this);
+  DefNewYoungerGenClosure younger_gen_closure(this, _old_gen);
 
-  CLDScanClosure cld_scan_closure(&fsc_with_no_gc_barrier,
+  CLDScanClosure cld_scan_closure(&scan_closure,
                                   heap->rem_set()->cld_rem_set()->accumulate_modified_oops());
 
-  set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier);
+  set_promo_failure_scan_stack_closure(&scan_closure);
   FastEvacuateFollowersClosure evacuate_followers(heap,
-                                                  &fsc_with_no_gc_barrier,
-                                                  &fsc_with_gc_barrier);
+                                                  &scan_closure,
+                                                  &younger_gen_closure);
 
   assert(heap->no_allocs_since_save_marks(),
          "save marks have not been newly set.");
 
   {

@@ -589,12 +583,12 @@
     // version of the card table scanning code is used.
     // See: CardTableRS::non_clean_card_iterate_possibly_parallel.
     StrongRootsScope srs(0);
 
     heap->young_process_roots(&srs,
-                              &fsc_with_no_gc_barrier,
-                              &fsc_with_gc_barrier,
+                              &scan_closure,
+                              &younger_gen_closure,
                               &cld_scan_closure);
   }
 
   // "evacuate followers".
   evacuate_followers.do_void();
< prev index next >