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