src/share/vm/memory/cardTableRS.cpp

Print this page
rev 6804 : imported patch commit-uncommit-within-heap


  37 #include "gc_implementation/g1/concurrentMark.hpp"
  38 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
  39 #endif // INCLUDE_ALL_GCS
  40 
  41 CardTableRS::CardTableRS(MemRegion whole_heap,
  42                          int max_covered_regions) :
  43   GenRemSet(),
  44   _cur_youngergen_card_val(youngergenP1_card),
  45   _regions_to_iterate(max_covered_regions - 1)
  46 {
  47 #if INCLUDE_ALL_GCS
  48   if (UseG1GC) {
  49       _ct_bs = new G1SATBCardTableLoggingModRefBS(whole_heap,
  50                                                   max_covered_regions);
  51   } else {
  52     _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions);
  53   }
  54 #else
  55   _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions);
  56 #endif

  57   set_bs(_ct_bs);
  58   _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, GenCollectedHeap::max_gens + 1,
  59                          mtGC, 0, AllocFailStrategy::RETURN_NULL);
  60   if (_last_cur_val_in_gen == NULL) {
  61     vm_exit_during_initialization("Could not create last_cur_val_in_gen array.");
  62   }
  63   for (int i = 0; i < GenCollectedHeap::max_gens + 1; i++) {
  64     _last_cur_val_in_gen[i] = clean_card_val();
  65   }
  66   _ct_bs->set_CTRS(this);
  67 }
  68 
  69 CardTableRS::~CardTableRS() {
  70   if (_ct_bs) {
  71     delete _ct_bs;
  72     _ct_bs = NULL;
  73   }
  74   if (_last_cur_val_in_gen) {
  75     FREE_C_HEAP_ARRAY(jbyte, _last_cur_val_in_gen, mtInternal);
  76   }




  37 #include "gc_implementation/g1/concurrentMark.hpp"
  38 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
  39 #endif // INCLUDE_ALL_GCS
  40 
  41 CardTableRS::CardTableRS(MemRegion whole_heap,
  42                          int max_covered_regions) :
  43   GenRemSet(),
  44   _cur_youngergen_card_val(youngergenP1_card),
  45   _regions_to_iterate(max_covered_regions - 1)
  46 {
  47 #if INCLUDE_ALL_GCS
  48   if (UseG1GC) {
  49       _ct_bs = new G1SATBCardTableLoggingModRefBS(whole_heap,
  50                                                   max_covered_regions);
  51   } else {
  52     _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions);
  53   }
  54 #else
  55   _ct_bs = new CardTableModRefBSForCTRS(whole_heap, max_covered_regions);
  56 #endif
  57   _ct_bs->initialize();
  58   set_bs(_ct_bs);
  59   _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, GenCollectedHeap::max_gens + 1,
  60                          mtGC, 0, AllocFailStrategy::RETURN_NULL);
  61   if (_last_cur_val_in_gen == NULL) {
  62     vm_exit_during_initialization("Could not create last_cur_val_in_gen array.");
  63   }
  64   for (int i = 0; i < GenCollectedHeap::max_gens + 1; i++) {
  65     _last_cur_val_in_gen[i] = clean_card_val();
  66   }
  67   _ct_bs->set_CTRS(this);
  68 }
  69 
  70 CardTableRS::~CardTableRS() {
  71   if (_ct_bs) {
  72     delete _ct_bs;
  73     _ct_bs = NULL;
  74   }
  75   if (_last_cur_val_in_gen) {
  76     FREE_C_HEAP_ARRAY(jbyte, _last_cur_val_in_gen, mtInternal);
  77   }