< prev index next >

src/hotspot/share/gc/cms/parNewGeneration.cpp

Print this page
rev 47957 : 8191564: Refactor GC related servicability code into GC specific subclasses


 611                            &par_scan_state.to_space_root_closure(),
 612                            &par_scan_state.older_gen_closure(),
 613                            &cld_scan_closure);
 614 
 615   par_scan_state.end_strong_roots();
 616 
 617   // "evacuate followers".
 618   par_scan_state.evacuate_followers_closure().do_void();
 619 
 620   // This will collapse this worker's promoted object list that's
 621   // created during the main ParNew parallel phase of ParNew. This has
 622   // to be called after all workers have finished promoting objects
 623   // and scanning promoted objects. It should be safe calling it from
 624   // here, given that we can only reach here after all thread have
 625   // offered termination, i.e., after there is no more work to be
 626   // done. It will also disable promotion tracking for the rest of
 627   // this GC as it's not necessary to be on during reference processing.
 628   _old_gen->par_oop_since_save_marks_iterate_done((int) worker_id);
 629 }
 630 
 631 ParNewGeneration::ParNewGeneration(ReservedSpace rs, size_t initial_byte_size)
 632   : DefNewGeneration(rs, initial_byte_size, "PCopy"),
 633   _overflow_list(NULL),
 634   _is_alive_closure(this),
 635   _plab_stats("Young", YoungPLABSize, PLABWeight)
 636 {
 637   NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
 638   NOT_PRODUCT(_num_par_pushes = 0;)
 639   _task_queues = new ObjToScanQueueSet(ParallelGCThreads);
 640   guarantee(_task_queues != NULL, "task_queues allocation failure.");
 641 
 642   for (uint i = 0; i < ParallelGCThreads; i++) {
 643     ObjToScanQueue *q = new ObjToScanQueue();
 644     guarantee(q != NULL, "work_queue Allocation failure.");
 645     _task_queues->register_queue(i, q);
 646   }
 647 
 648   for (uint i = 0; i < ParallelGCThreads; i++) {
 649     _task_queues->queue(i)->initialize();
 650   }
 651 
 652   _overflow_stacks = NULL;




 611                            &par_scan_state.to_space_root_closure(),
 612                            &par_scan_state.older_gen_closure(),
 613                            &cld_scan_closure);
 614 
 615   par_scan_state.end_strong_roots();
 616 
 617   // "evacuate followers".
 618   par_scan_state.evacuate_followers_closure().do_void();
 619 
 620   // This will collapse this worker's promoted object list that's
 621   // created during the main ParNew parallel phase of ParNew. This has
 622   // to be called after all workers have finished promoting objects
 623   // and scanning promoted objects. It should be safe calling it from
 624   // here, given that we can only reach here after all thread have
 625   // offered termination, i.e., after there is no more work to be
 626   // done. It will also disable promotion tracking for the rest of
 627   // this GC as it's not necessary to be on during reference processing.
 628   _old_gen->par_oop_since_save_marks_iterate_done((int) worker_id);
 629 }
 630 
 631 ParNewGeneration::ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, GCMemoryManager* mem_mgr)
 632   : DefNewGeneration(rs, initial_byte_size, mem_mgr, "PCopy"),
 633   _overflow_list(NULL),
 634   _is_alive_closure(this),
 635   _plab_stats("Young", YoungPLABSize, PLABWeight)
 636 {
 637   NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
 638   NOT_PRODUCT(_num_par_pushes = 0;)
 639   _task_queues = new ObjToScanQueueSet(ParallelGCThreads);
 640   guarantee(_task_queues != NULL, "task_queues allocation failure.");
 641 
 642   for (uint i = 0; i < ParallelGCThreads; i++) {
 643     ObjToScanQueue *q = new ObjToScanQueue();
 644     guarantee(q != NULL, "work_queue Allocation failure.");
 645     _task_queues->register_queue(i, q);
 646   }
 647 
 648   for (uint i = 0; i < ParallelGCThreads; i++) {
 649     _task_queues->queue(i)->initialize();
 650   }
 651 
 652   _overflow_stacks = NULL;


< prev index next >