65 _into_cset_dirty_card_queue_set.initialize(NULL, // Should never be called by the Java code
66 DirtyCardQ_CBL_mon,
67 DirtyCardQ_FL_lock,
68 -1, // never trigger processing
69 -1, // no limit on length
70 Shared_DirtyCardQ_lock,
71 &JavaThread::dirty_card_queue_set());
72 }
73
74 G1RemSet::~G1RemSet() {
75 for (uint i = 0; i < n_workers(); i++) {
76 assert(_cset_rs_update_cl[i] == NULL, "it should be");
77 }
78 FREE_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, _cset_rs_update_cl);
79 }
80
81 uint G1RemSet::num_par_rem_sets() {
82 return MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
83 }
84
85 void G1RemSet::init_heap(uint max_regions) {
86 G1FromCardCache::initialize(num_par_rem_sets(), max_regions);
87 }
88
89 ScanRSClosure::ScanRSClosure(G1ParPushHeapRSClosure* oc,
90 CodeBlobClosure* code_root_cl,
91 uint worker_i) :
92 _oc(oc),
93 _code_root_cl(code_root_cl),
94 _strong_code_root_scan_time_sec(0.0),
95 _cards(0),
96 _cards_done(0),
97 _worker_i(worker_i),
98 _try_claimed(false) {
99 _g1h = G1CollectedHeap::heap();
100 _bot_shared = _g1h->bot_shared();
101 _ct_bs = _g1h->g1_barrier_set();
102 _block_size = MAX2<size_t>(G1RSetScanBlockSize, 1);
103 }
104
105 void ScanRSClosure::scanCard(size_t index, HeapRegion *r) {
|
65 _into_cset_dirty_card_queue_set.initialize(NULL, // Should never be called by the Java code
66 DirtyCardQ_CBL_mon,
67 DirtyCardQ_FL_lock,
68 -1, // never trigger processing
69 -1, // no limit on length
70 Shared_DirtyCardQ_lock,
71 &JavaThread::dirty_card_queue_set());
72 }
73
74 G1RemSet::~G1RemSet() {
75 for (uint i = 0; i < n_workers(); i++) {
76 assert(_cset_rs_update_cl[i] == NULL, "it should be");
77 }
78 FREE_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, _cset_rs_update_cl);
79 }
80
81 uint G1RemSet::num_par_rem_sets() {
82 return MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
83 }
84
85 void G1RemSet::initialize(uint max_regions) {
86 G1FromCardCache::initialize(num_par_rem_sets(), max_regions);
87 }
88
89 ScanRSClosure::ScanRSClosure(G1ParPushHeapRSClosure* oc,
90 CodeBlobClosure* code_root_cl,
91 uint worker_i) :
92 _oc(oc),
93 _code_root_cl(code_root_cl),
94 _strong_code_root_scan_time_sec(0.0),
95 _cards(0),
96 _cards_done(0),
97 _worker_i(worker_i),
98 _try_claimed(false) {
99 _g1h = G1CollectedHeap::heap();
100 _bot_shared = _g1h->bot_shared();
101 _ct_bs = _g1h->g1_barrier_set();
102 _block_size = MAX2<size_t>(G1RSetScanBlockSize, 1);
103 }
104
105 void ScanRSClosure::scanCard(size_t index, HeapRegion *r) {
|