< prev index next >

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

Print this page

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

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