< prev index next >

src/hotspot/share/gc/g1/g1ParScanThreadState.hpp

Print this page

143   // Assumes that a significant amount of pre-filtering (like done by
144   // write_ref_field_post() above) has already been performed.
145   template <class T> void enqueue_card_if_tracked(G1HeapRegionAttr region_attr, T* p, oop o);
146 
147   G1EvacuationRootClosures* closures() { return _closures; }
148   uint worker_id() { return _worker_id; }
149 
150   size_t lab_waste_words() const;
151   size_t lab_undo_waste_words() const;
152 
153   // Pass locally gathered statistics to global state. Returns the total number of
154   // HeapWords copied.
155   size_t flush(size_t* surviving_young_words);
156 
157 private:
158   void do_partial_array(PartialArrayScanTask task);
159   void start_partial_objarray(G1HeapRegionAttr dest_dir, oop from, oop to);
160 
161   HeapWord* allocate_copy_slow(G1HeapRegionAttr* dest_attr,
162                                oop old,

163                                size_t word_sz,
164                                uint age,
165                                uint node_index);
166 
167   void undo_allocation(G1HeapRegionAttr dest_addr,
168                        HeapWord* obj_ptr,
169                        size_t word_sz,
170                        uint node_index);
171 
172   oop do_copy_to_survivor_space(G1HeapRegionAttr region_attr,
173                                 oop obj,
174                                 markWord old_mark);
175 
176   // This method is applied to the fields of the objects that have just been copied.
177   template <class T> void do_oop_evac(T* p);
178 
179   void dispatch_task(ScannerTask task);
180 
181   // Tries to allocate word_sz in the PLAB of the next "generation" after trying to
182   // allocate into dest. Previous_plab_refill_failed indicates whether previous
183   // PLAB refill for the original (source) object failed.
184   // Returns a non-NULL pointer if successful, and updates dest if required.
185   // Also determines whether we should continue to try to allocate into the various
186   // generations or just end trying to allocate.
187   HeapWord* allocate_in_next_plab(G1HeapRegionAttr* dest,
188                                   size_t word_sz,
189                                   bool previous_plab_refill_failed,
190                                   uint node_index);
191 
192   inline G1HeapRegionAttr next_region_attr(G1HeapRegionAttr const region_attr, markWord const m, uint& age);
193 
194   void report_promotion_event(G1HeapRegionAttr const dest_attr,
195                               oop const old, size_t word_sz, uint age,
196                               HeapWord * const obj_ptr, uint node_index) const;
197 
198   void trim_queue_to_threshold(uint threshold);
199 
200   inline bool needs_partial_trimming() const;
201 
202   // NUMA statistics related methods.
203   void initialize_numa_stats();
204   void flush_numa_stats();
205   inline void update_numa_stats(uint node_index);
206 
207 public:
208   oop copy_to_survivor_space(G1HeapRegionAttr region_attr, oop obj, markWord old_mark);
209 
210   inline void trim_queue();
211   inline void trim_queue_partially();
212   void steal_and_trim_queue(G1ScannerTasksQueueSet *task_queues);
213 
214   Tickspan trim_ticks() const;
215   void reset_trim_ticks();

143   // Assumes that a significant amount of pre-filtering (like done by
144   // write_ref_field_post() above) has already been performed.
145   template <class T> void enqueue_card_if_tracked(G1HeapRegionAttr region_attr, T* p, oop o);
146 
147   G1EvacuationRootClosures* closures() { return _closures; }
148   uint worker_id() { return _worker_id; }
149 
150   size_t lab_waste_words() const;
151   size_t lab_undo_waste_words() const;
152 
153   // Pass locally gathered statistics to global state. Returns the total number of
154   // HeapWords copied.
155   size_t flush(size_t* surviving_young_words);
156 
157 private:
158   void do_partial_array(PartialArrayScanTask task);
159   void start_partial_objarray(G1HeapRegionAttr dest_dir, oop from, oop to);
160 
161   HeapWord* allocate_copy_slow(G1HeapRegionAttr* dest_attr,
162                                oop old,
163                                Klass* klass,
164                                size_t word_sz,
165                                uint age,
166                                uint node_index);
167 
168   void undo_allocation(G1HeapRegionAttr dest_addr,
169                        HeapWord* obj_ptr,
170                        size_t word_sz,
171                        uint node_index);
172 
173   oop do_copy_to_survivor_space(G1HeapRegionAttr region_attr,
174                                 oop obj,
175                                 markWord old_mark);
176 
177   // This method is applied to the fields of the objects that have just been copied.
178   template <class T> void do_oop_evac(T* p);
179 
180   void dispatch_task(ScannerTask task);
181 
182   // Tries to allocate word_sz in the PLAB of the next "generation" after trying to
183   // allocate into dest. Previous_plab_refill_failed indicates whether previous
184   // PLAB refill for the original (source) object failed.
185   // Returns a non-NULL pointer if successful, and updates dest if required.
186   // Also determines whether we should continue to try to allocate into the various
187   // generations or just end trying to allocate.
188   HeapWord* allocate_in_next_plab(G1HeapRegionAttr* dest,
189                                   size_t word_sz,
190                                   bool previous_plab_refill_failed,
191                                   uint node_index);
192 
193   inline G1HeapRegionAttr next_region_attr(G1HeapRegionAttr const region_attr, markWord const m, uint& age);
194 
195   void report_promotion_event(G1HeapRegionAttr const dest_attr,
196                               oop const old, Klass* klass, size_t word_sz, uint age,
197                               HeapWord * const obj_ptr, uint node_index) const;
198 
199   void trim_queue_to_threshold(uint threshold);
200 
201   inline bool needs_partial_trimming() const;
202 
203   // NUMA statistics related methods.
204   void initialize_numa_stats();
205   void flush_numa_stats();
206   inline void update_numa_stats(uint node_index);
207 
208 public:
209   oop copy_to_survivor_space(G1HeapRegionAttr region_attr, oop obj, markWord old_mark);
210 
211   inline void trim_queue();
212   inline void trim_queue_partially();
213   void steal_and_trim_queue(G1ScannerTasksQueueSet *task_queues);
214 
215   Tickspan trim_ticks() const;
216   void reset_trim_ticks();
< prev index next >