274 size_t cards_scanned = scanRS(oc, heap_region_codeblobs, worker_i);
275
276 // We now clear the cached values of _cset_rs_update_cl for this worker
277 _cset_rs_update_cl[worker_i] = NULL;
278 return cards_scanned;
279 }
280
281 void G1RemSet::prepare_for_oops_into_collection_set_do() {
282 _g1->set_refine_cte_cl_concurrency(false);
283 DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
284 dcqs.concatenate_logs();
285 }
286
287 void G1RemSet::cleanup_after_oops_into_collection_set_do() {
288 // Cleanup after copy
289 _g1->set_refine_cte_cl_concurrency(true);
290 // Set all cards back to clean.
291 _g1->cleanUpCardTable();
292
293 DirtyCardQueueSet& into_cset_dcqs = _into_cset_dirty_card_queue_set;
294 int into_cset_n_buffers = into_cset_dcqs.completed_buffers_num();
295
296 if (_g1->evacuation_failed()) {
297 double restore_remembered_set_start = os::elapsedTime();
298
299 // Restore remembered sets for the regions pointing into the collection set.
300 // We just need to transfer the completed buffers from the DirtyCardQueueSet
301 // used to hold cards that contain references that point into the collection set
302 // to the DCQS used to hold the deferred RS updates.
303 _g1->dirty_card_queue_set().merge_bufferlists(&into_cset_dcqs);
304 _g1->g1_policy()->phase_times()->record_evac_fail_restore_remsets((os::elapsedTime() - restore_remembered_set_start) * 1000.0);
305 }
306
307 // Free any completed buffers in the DirtyCardQueueSet used to hold cards
308 // which contain references that point into the collection.
309 _into_cset_dirty_card_queue_set.clear();
310 assert(_into_cset_dirty_card_queue_set.completed_buffers_num() == 0,
311 "all buffers should be freed");
312 _into_cset_dirty_card_queue_set.clear_n_completed_buffers();
313 }
314
|
274 size_t cards_scanned = scanRS(oc, heap_region_codeblobs, worker_i);
275
276 // We now clear the cached values of _cset_rs_update_cl for this worker
277 _cset_rs_update_cl[worker_i] = NULL;
278 return cards_scanned;
279 }
280
281 void G1RemSet::prepare_for_oops_into_collection_set_do() {
282 _g1->set_refine_cte_cl_concurrency(false);
283 DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
284 dcqs.concatenate_logs();
285 }
286
287 void G1RemSet::cleanup_after_oops_into_collection_set_do() {
288 // Cleanup after copy
289 _g1->set_refine_cte_cl_concurrency(true);
290 // Set all cards back to clean.
291 _g1->cleanUpCardTable();
292
293 DirtyCardQueueSet& into_cset_dcqs = _into_cset_dirty_card_queue_set;
294
295 if (_g1->evacuation_failed()) {
296 double restore_remembered_set_start = os::elapsedTime();
297
298 // Restore remembered sets for the regions pointing into the collection set.
299 // We just need to transfer the completed buffers from the DirtyCardQueueSet
300 // used to hold cards that contain references that point into the collection set
301 // to the DCQS used to hold the deferred RS updates.
302 _g1->dirty_card_queue_set().merge_bufferlists(&into_cset_dcqs);
303 _g1->g1_policy()->phase_times()->record_evac_fail_restore_remsets((os::elapsedTime() - restore_remembered_set_start) * 1000.0);
304 }
305
306 // Free any completed buffers in the DirtyCardQueueSet used to hold cards
307 // which contain references that point into the collection.
308 _into_cset_dirty_card_queue_set.clear();
309 assert(_into_cset_dirty_card_queue_set.completed_buffers_num() == 0,
310 "all buffers should be freed");
311 _into_cset_dirty_card_queue_set.clear_n_completed_buffers();
312 }
313
|