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