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;
|