1750 _workers->initialize_workers(); |
1750 _workers->initialize_workers(); |
1751 |
1751 |
1752 _allocator = G1Allocator::create_allocator(this); |
1752 _allocator = G1Allocator::create_allocator(this); |
1753 _humongous_object_threshold_in_words = HeapRegion::GrainWords / 2; |
1753 _humongous_object_threshold_in_words = HeapRegion::GrainWords / 2; |
1754 |
1754 |
1755 int n_queues = (int)ParallelGCThreads; |
1755 uint n_queues = ParallelGCThreads; |
1756 _task_queues = new RefToScanQueueSet(n_queues); |
1756 _task_queues = new RefToScanQueueSet(n_queues); |
1757 |
1757 |
1758 uint n_rem_sets = HeapRegionRemSet::num_par_rem_sets(); |
1758 uint n_rem_sets = HeapRegionRemSet::num_par_rem_sets(); |
1759 assert(n_rem_sets > 0, "Invariant."); |
1759 assert(n_rem_sets > 0, "Invariant."); |
1760 |
1760 |
1761 _worker_cset_start_region = NEW_C_HEAP_ARRAY(HeapRegion*, n_queues, mtGC); |
1761 _worker_cset_start_region = NEW_C_HEAP_ARRAY(HeapRegion*, n_queues, mtGC); |
1762 _worker_cset_start_region_time_stamp = NEW_C_HEAP_ARRAY(uint, n_queues, mtGC); |
1762 _worker_cset_start_region_time_stamp = NEW_C_HEAP_ARRAY(uint, n_queues, mtGC); |
1763 _evacuation_failed_info_array = NEW_C_HEAP_ARRAY(EvacuationFailedInfo, n_queues, mtGC); |
1763 _evacuation_failed_info_array = NEW_C_HEAP_ARRAY(EvacuationFailedInfo, n_queues, mtGC); |
1764 |
1764 |
1765 for (int i = 0; i < n_queues; i++) { |
1765 for (uint i = 0; i < n_queues; i++) { |
1766 RefToScanQueue* q = new RefToScanQueue(); |
1766 RefToScanQueue* q = new RefToScanQueue(); |
1767 q->initialize(); |
1767 q->initialize(); |
1768 _task_queues->register_queue(i, q); |
1768 _task_queues->register_queue(i, q); |
1769 ::new (&_evacuation_failed_info_array[i]) EvacuationFailedInfo(); |
1769 ::new (&_evacuation_failed_info_array[i]) EvacuationFailedInfo(); |
1770 } |
1770 } |
2062 // Concurrent Mark ref processor |
2062 // Concurrent Mark ref processor |
2063 _ref_processor_cm = |
2063 _ref_processor_cm = |
2064 new ReferenceProcessor(mr, // span |
2064 new ReferenceProcessor(mr, // span |
2065 ParallelRefProcEnabled && (ParallelGCThreads > 1), |
2065 ParallelRefProcEnabled && (ParallelGCThreads > 1), |
2066 // mt processing |
2066 // mt processing |
2067 (uint) ParallelGCThreads, |
2067 ParallelGCThreads, |
2068 // degree of mt processing |
2068 // degree of mt processing |
2069 (ParallelGCThreads > 1) || (ConcGCThreads > 1), |
2069 (ParallelGCThreads > 1) || (ConcGCThreads > 1), |
2070 // mt discovery |
2070 // mt discovery |
2071 (uint) MAX2(ParallelGCThreads, ConcGCThreads), |
2071 MAX2(ParallelGCThreads, ConcGCThreads), |
2072 // degree of mt discovery |
2072 // degree of mt discovery |
2073 false, |
2073 false, |
2074 // Reference discovery is not atomic |
2074 // Reference discovery is not atomic |
2075 &_is_alive_closure_cm); |
2075 &_is_alive_closure_cm); |
2076 // is alive closure |
2076 // is alive closure |
2079 // STW ref processor |
2079 // STW ref processor |
2080 _ref_processor_stw = |
2080 _ref_processor_stw = |
2081 new ReferenceProcessor(mr, // span |
2081 new ReferenceProcessor(mr, // span |
2082 ParallelRefProcEnabled && (ParallelGCThreads > 1), |
2082 ParallelRefProcEnabled && (ParallelGCThreads > 1), |
2083 // mt processing |
2083 // mt processing |
2084 (uint) ParallelGCThreads, |
2084 ParallelGCThreads, |
2085 // degree of mt processing |
2085 // degree of mt processing |
2086 (ParallelGCThreads > 1), |
2086 (ParallelGCThreads > 1), |
2087 // mt discovery |
2087 // mt discovery |
2088 (uint) ParallelGCThreads, |
2088 ParallelGCThreads, |
2089 // degree of mt discovery |
2089 // degree of mt discovery |
2090 true, |
2090 true, |
2091 // Reference discovery is atomic |
2091 // Reference discovery is atomic |
2092 &_is_alive_closure_stw); |
2092 &_is_alive_closure_stw); |
2093 // is alive closure |
2093 // is alive closure |