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