59 _old_gen = heap->old_gen();
60 _start_array = old_gen()->start_array();
61
62 marking_stack()->initialize();
63 _objarray_stack.initialize();
64 _region_stack.initialize();
65
66 reset_bitmap_query_cache();
67 }
68
69 void ParCompactionManager::initialize(ParMarkBitMap* mbm) {
70 assert(ParallelScavengeHeap::heap() != NULL,
71 "Needed for initialization");
72
73 _mark_bitmap = mbm;
74
75 uint parallel_gc_threads = ParallelScavengeHeap::heap()->workers().total_workers();
76
77 assert(_manager_array == NULL, "Attempt to initialize twice");
78 _manager_array = NEW_C_HEAP_ARRAY(ParCompactionManager*, parallel_gc_threads+1, mtGC);
79 guarantee(_manager_array != NULL, "Could not allocate manager_array");
80
81 _stack_array = new OopTaskQueueSet(parallel_gc_threads);
82 guarantee(_stack_array != NULL, "Could not allocate stack_array");
83 _objarray_queues = new ObjArrayTaskQueueSet(parallel_gc_threads);
84 guarantee(_objarray_queues != NULL, "Could not allocate objarray_queues");
85 _region_array = new RegionTaskQueueSet(parallel_gc_threads);
86 guarantee(_region_array != NULL, "Could not allocate region_array");
87
88 // Create and register the ParCompactionManager(s) for the worker threads.
89 for(uint i=0; i<parallel_gc_threads; i++) {
90 _manager_array[i] = new ParCompactionManager();
91 guarantee(_manager_array[i] != NULL, "Could not create ParCompactionManager");
92 stack_array()->register_queue(i, _manager_array[i]->marking_stack());
93 _objarray_queues->register_queue(i, &_manager_array[i]->_objarray_stack);
94 region_array()->register_queue(i, _manager_array[i]->region_stack());
95 }
96
97 // The VMThread gets its own ParCompactionManager, which is not available
98 // for work stealing.
99 _manager_array[parallel_gc_threads] = new ParCompactionManager();
|
59 _old_gen = heap->old_gen();
60 _start_array = old_gen()->start_array();
61
62 marking_stack()->initialize();
63 _objarray_stack.initialize();
64 _region_stack.initialize();
65
66 reset_bitmap_query_cache();
67 }
68
69 void ParCompactionManager::initialize(ParMarkBitMap* mbm) {
70 assert(ParallelScavengeHeap::heap() != NULL,
71 "Needed for initialization");
72
73 _mark_bitmap = mbm;
74
75 uint parallel_gc_threads = ParallelScavengeHeap::heap()->workers().total_workers();
76
77 assert(_manager_array == NULL, "Attempt to initialize twice");
78 _manager_array = NEW_C_HEAP_ARRAY(ParCompactionManager*, parallel_gc_threads+1, mtGC);
79
80 _stack_array = new OopTaskQueueSet(parallel_gc_threads);
81 guarantee(_stack_array != NULL, "Could not allocate stack_array");
82 _objarray_queues = new ObjArrayTaskQueueSet(parallel_gc_threads);
83 guarantee(_objarray_queues != NULL, "Could not allocate objarray_queues");
84 _region_array = new RegionTaskQueueSet(parallel_gc_threads);
85 guarantee(_region_array != NULL, "Could not allocate region_array");
86
87 // Create and register the ParCompactionManager(s) for the worker threads.
88 for(uint i=0; i<parallel_gc_threads; i++) {
89 _manager_array[i] = new ParCompactionManager();
90 guarantee(_manager_array[i] != NULL, "Could not create ParCompactionManager");
91 stack_array()->register_queue(i, _manager_array[i]->marking_stack());
92 _objarray_queues->register_queue(i, &_manager_array[i]->_objarray_stack);
93 region_array()->register_queue(i, _manager_array[i]->region_stack());
94 }
95
96 // The VMThread gets its own ParCompactionManager, which is not available
97 // for work stealing.
98 _manager_array[parallel_gc_threads] = new ParCompactionManager();
|