103 // Provides mutual exclusive access of _shadow_region_array.
104 // See pop/push_shadow_region_mt_safe() below
105 static Monitor* _shadow_region_monitor;
106
107 StringDedup::Requests _string_dedup_requests;
108
109 static PSOldGen* old_gen() { return _old_gen; }
110 static ObjectStartArray* start_array() { return _start_array; }
111 static PSMarkTasksQueueSet* marking_stacks() { return _marking_stacks; }
112
113 static void initialize(ParMarkBitMap* mbm);
114
115 ParCompactionManager(PreservedMarks* preserved_marks,
116 ReferenceProcessor* ref_processor,
117 uint parallel_gc_threads);
118
119 // Array of task queues. Needed by the task terminator.
120 static RegionTaskQueueSet* region_task_queues() { return _region_task_queues; }
121
122 inline PSMarkTaskQueue* marking_stack() { return &_marking_stack; }
123 void push_objArray(oop obj);
124
125 // To collect per-region live-words in a worker local cache in order to
126 // reduce threads contention.
127 class MarkingStatsCache : public CHeapObj<mtGC> {
128 constexpr static size_t num_entries = 1024;
129 static_assert(is_power_of_2(num_entries), "inv");
130 static_assert(num_entries > 0, "inv");
131
132 constexpr static size_t entry_mask = num_entries - 1;
133
134 struct CacheEntry {
135 size_t region_id;
136 size_t live_words;
137 };
138
139 CacheEntry entries[num_entries] = {};
140
141 inline void push(size_t region_id, size_t live_words);
142
143 public:
|
103 // Provides mutual exclusive access of _shadow_region_array.
104 // See pop/push_shadow_region_mt_safe() below
105 static Monitor* _shadow_region_monitor;
106
107 StringDedup::Requests _string_dedup_requests;
108
109 static PSOldGen* old_gen() { return _old_gen; }
110 static ObjectStartArray* start_array() { return _start_array; }
111 static PSMarkTasksQueueSet* marking_stacks() { return _marking_stacks; }
112
113 static void initialize(ParMarkBitMap* mbm);
114
115 ParCompactionManager(PreservedMarks* preserved_marks,
116 ReferenceProcessor* ref_processor,
117 uint parallel_gc_threads);
118
119 // Array of task queues. Needed by the task terminator.
120 static RegionTaskQueueSet* region_task_queues() { return _region_task_queues; }
121
122 inline PSMarkTaskQueue* marking_stack() { return &_marking_stack; }
123 void push_objArray(objArrayOop obj);
124
125 // To collect per-region live-words in a worker local cache in order to
126 // reduce threads contention.
127 class MarkingStatsCache : public CHeapObj<mtGC> {
128 constexpr static size_t num_entries = 1024;
129 static_assert(is_power_of_2(num_entries), "inv");
130 static_assert(num_entries > 0, "inv");
131
132 constexpr static size_t entry_mask = num_entries - 1;
133
134 struct CacheEntry {
135 size_t region_id;
136 size_t live_words;
137 };
138
139 CacheEntry entries[num_entries] = {};
140
141 inline void push(size_t region_id, size_t live_words);
142
143 public:
|