< prev index next >

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

Print this page
rev 12854 : [mq]: gcinterface.patch


  57   ClassLoaderDataGraph::classes_do(&closure);
  58 
  59   return !closure.found();
  60 }
  61 
  62 
  63 class ClearKlassModUnionClosure : public KlassClosure {
  64  public:
  65   void do_klass(Klass* klass) {
  66     if (klass->has_accumulated_modified_oops()) {
  67       klass->clear_accumulated_modified_oops();
  68     }
  69   }
  70 };
  71 
  72 void KlassRemSet::clear_mod_union() {
  73   ClearKlassModUnionClosure closure;
  74   ClassLoaderDataGraph::classes_do(&closure);
  75 }
  76 
  77 CardTableRS::CardTableRS(MemRegion whole_heap) :
  78   _bs(NULL),
  79   _cur_youngergen_card_val(youngergenP1_card)
  80 {
  81   _ct_bs = new CardTableModRefBSForCTRS(whole_heap);
  82   _ct_bs->initialize();
  83   set_bs(_ct_bs);
  84   // max_gens is really GenCollectedHeap::heap()->gen_policy()->number_of_generations()
  85   // (which is always 2, young & old), but GenCollectedHeap has not been initialized yet.
  86   uint max_gens = 2;
  87   _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, max_gens + 1,
  88                          mtGC, CURRENT_PC, AllocFailStrategy::RETURN_NULL);
  89   if (_last_cur_val_in_gen == NULL) {
  90     vm_exit_during_initialization("Could not create last_cur_val_in_gen array.");
  91   }
  92   for (uint i = 0; i < max_gens + 1; i++) {
  93     _last_cur_val_in_gen[i] = clean_card_val();
  94   }
  95   _ct_bs->set_CTRS(this);
  96 }
  97 
  98 CardTableRS::~CardTableRS() {
  99   if (_ct_bs) {
 100     delete _ct_bs;
 101     _ct_bs = NULL;




  57   ClassLoaderDataGraph::classes_do(&closure);
  58 
  59   return !closure.found();
  60 }
  61 
  62 
  63 class ClearKlassModUnionClosure : public KlassClosure {
  64  public:
  65   void do_klass(Klass* klass) {
  66     if (klass->has_accumulated_modified_oops()) {
  67       klass->clear_accumulated_modified_oops();
  68     }
  69   }
  70 };
  71 
  72 void KlassRemSet::clear_mod_union() {
  73   ClearKlassModUnionClosure closure;
  74   ClassLoaderDataGraph::classes_do(&closure);
  75 }
  76 
  77 CardTableRS::CardTableRS(MemRegion whole_heap, CardTableModRefBSForCTRS* ct_bs) :
  78   _bs(NULL),
  79   _cur_youngergen_card_val(youngergenP1_card)
  80 {
  81   _ct_bs = ct_bs;
  82   _ct_bs->initialize();
  83   set_bs(_ct_bs);
  84   // max_gens is really GenCollectedHeap::heap()->gen_policy()->number_of_generations()
  85   // (which is always 2, young & old), but GenCollectedHeap has not been initialized yet.
  86   uint max_gens = 2;
  87   _last_cur_val_in_gen = NEW_C_HEAP_ARRAY3(jbyte, max_gens + 1,
  88                          mtGC, CURRENT_PC, AllocFailStrategy::RETURN_NULL);
  89   if (_last_cur_val_in_gen == NULL) {
  90     vm_exit_during_initialization("Could not create last_cur_val_in_gen array.");
  91   }
  92   for (uint i = 0; i < max_gens + 1; i++) {
  93     _last_cur_val_in_gen[i] = clean_card_val();
  94   }
  95   _ct_bs->set_CTRS(this);
  96 }
  97 
  98 CardTableRS::~CardTableRS() {
  99   if (_ct_bs) {
 100     delete _ct_bs;
 101     _ct_bs = NULL;


< prev index next >