src/share/vm/memory/cardTableRS.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/memory

src/share/vm/memory/cardTableRS.cpp

Print this page
rev 7214 : imported patch remove_n_gen


  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, CURRENT_PC, 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   }
  78 }
  79 
  80 void CardTableRS::resize_covered_region(MemRegion new_region) {
  81   _ct_bs->resize_covered_region(new_region);
  82 }
  83 
  84 jbyte CardTableRS::find_unused_youngergenP_card_value() {




  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   // max_gens is really GenCollectedHeap::heap()->gen_policy()->number_of_generations()
  60   // (which always is 2), but GenCollectedHeap has not been initialized yet.
  61   int max_gens = 2;
  62   _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, max_gens + 1,
  63                          mtGC, CURRENT_PC, AllocFailStrategy::RETURN_NULL);
  64   if (_last_cur_val_in_gen == NULL) {
  65     vm_exit_during_initialization("Could not create last_cur_val_in_gen array.");
  66   }
  67   for (int i = 0; i < max_gens + 1; i++) {
  68     _last_cur_val_in_gen[i] = clean_card_val();
  69   }
  70   _ct_bs->set_CTRS(this);
  71 }
  72 
  73 CardTableRS::~CardTableRS() {
  74   if (_ct_bs) {
  75     delete _ct_bs;
  76     _ct_bs = NULL;
  77   }
  78   if (_last_cur_val_in_gen) {
  79     FREE_C_HEAP_ARRAY(jbyte, _last_cur_val_in_gen, mtInternal);
  80   }
  81 }
  82 
  83 void CardTableRS::resize_covered_region(MemRegion new_region) {
  84   _ct_bs->resize_covered_region(new_region);
  85 }
  86 
  87 jbyte CardTableRS::find_unused_youngergenP_card_value() {


src/share/vm/memory/cardTableRS.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File