< prev index next >

src/hotspot/share/gc/parallel/psCompactionManager.hpp

Print this page

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:
< prev index next >