< prev index next >

src/hotspot/share/gc/shared/cardTableRS.cpp

Print this page

        

@@ -110,17 +110,14 @@
     // the inline barrier is  correct.
     set_cur_youngergen_card_val(youngergen_card);
   }
 }
 
-void CardTableRS::younger_refs_iterate(Generation* g,
-                                       OopsInGenClosure* blk,
-                                       uint n_threads) {
+void CardTableRS::at_younger_refs_iterate() {
   // The indexing in this array is slightly odd. We want to access
   // the old generation record here, which is at index 2.
   _last_cur_val_in_gen[2] = cur_youngergen_card_val();
-  g->younger_refs_iterate(blk, n_threads);
 }
 
 inline bool ClearNoncleanCardWrapper::clear_card(CardValue* entry) {
   if (_is_par) {
     return clear_card_parallel(entry);

@@ -243,16 +240,17 @@
     _dirty_card_closure->do_MemRegion(mrd);
   }
 }
 
 void CardTableRS::younger_refs_in_space_iterate(Space* sp,
-                                                OopsInGenClosure* cl,
+                                                HeapWord* gen_boundary,
+                                                OopIterateClosure* cl,
                                                 uint n_threads) {
   verify_used_region_at_save_marks(sp);
 
   const MemRegion urasm = sp->used_region_at_save_marks();
-  non_clean_card_iterate_possibly_parallel(sp, urasm, cl, this, n_threads);
+  non_clean_card_iterate_possibly_parallel(sp, gen_boundary, urasm, cl, this, n_threads);
 }
 
 #ifdef ASSERT
 void CardTableRS::verify_used_region_at_save_marks(Space* sp) const {
   MemRegion ur    = sp->used_region();

@@ -622,12 +620,13 @@
      CardTableRS::youngergen_may_have_been_dirty(cv));
 }
 
 void CardTableRS::non_clean_card_iterate_possibly_parallel(
   Space* sp,
+  HeapWord* gen_boundary,
   MemRegion mr,
-  OopsInGenClosure* cl,
+  OopIterateClosure* cl,
   CardTableRS* ct,
   uint n_threads)
 {
   if (!mr.is_empty()) {
     if (n_threads > 0) {

@@ -636,20 +635,20 @@
       // clear_cl finds contiguous dirty ranges of cards to process and clear.
 
       // This is the single-threaded version used by DefNew.
       const bool parallel = false;
 
-      DirtyCardToOopClosure* dcto_cl = sp->new_dcto_cl(cl, precision(), cl->gen_boundary(), parallel);
+      DirtyCardToOopClosure* dcto_cl = sp->new_dcto_cl(cl, precision(), gen_boundary, parallel);
       ClearNoncleanCardWrapper clear_cl(dcto_cl, ct, parallel);
 
       clear_cl.do_MemRegion(mr);
     }
   }
 }
 
 void CardTableRS::non_clean_card_iterate_parallel_work(Space* sp, MemRegion mr,
-                                                       OopsInGenClosure* cl, CardTableRS* ct,
+                                                       OopIterateClosure* cl, CardTableRS* ct,
                                                        uint n_threads) {
   fatal("Parallel gc not supported here.");
 }
 
 bool CardTableRS::is_in_young(oop obj) const {
< prev index next >