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

src/share/vm/memory/cardTableRS.cpp

Print this page




  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() {
  85   for (jbyte v = youngergenP1_card;
  86        v < cur_youngergen_and_prev_nonclean_card;
  87        v++) {
  88     bool seen = false;
  89     for (int g = 0; g < _regions_to_iterate; g++) {
  90       if (_last_cur_val_in_gen[g] == v) {
  91         seen = true;
  92         break;
  93       }
  94     }
  95     if (!seen) return v;
  96   }




  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);
  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() {
  85   for (jbyte v = youngergenP1_card;
  86        v < cur_youngergen_and_prev_nonclean_card;
  87        v++) {
  88     bool seen = false;
  89     for (int g = 0; g < _regions_to_iterate; g++) {
  90       if (_last_cur_val_in_gen[g] == v) {
  91         seen = true;
  92         break;
  93       }
  94     }
  95     if (!seen) return v;
  96   }


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