src/share/vm/gc/g1/g1RemSet.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/gc/g1

src/share/vm/gc/g1/g1RemSet.cpp

Print this page




 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 


src/share/vm/gc/g1/g1RemSet.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File