< prev index next >

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

Print this page

        

@@ -276,10 +276,20 @@
   // Start a new collection set increment.
   void update_incremental_marker() { _inc_build_state = Active; _inc_part_start = _collection_set_cur_length; }
   // Stop adding regions to the current collection set increment.
   void stop_incremental_building() { _inc_build_state = Inactive; }
 
+  // Iterate the part of the collection set given by the offset and length applying the given
+  // HeapRegionClosure. The worker_id will determine where in the part to start the iteration
+  // to allow for more efficient parallel iteration.
+  void iterate_part_from(HeapRegionClosure* cl,
+                         HeapRegionClaimer* hr_claimer,
+                         size_t offset,
+                         size_t lenght,
+                         uint worker_id,
+                         uint total_workers) const;
+
   // Iterate over the current collection set increment applying the given HeapRegionClosure
   // from a starting position determined by the given worker id.
   void iterate_incremental_part_from(HeapRegionClosure* cl, HeapRegionClaimer* hr_claimer, uint worker_id, uint total_workers) const;
 
   // Returns the length of the current increment in number of regions.

@@ -288,10 +298,14 @@
   size_t cur_length() const { return _collection_set_cur_length; }
 
   // Iterate over the entire collection set (all increments calculated so far), applying
   // the given HeapRegionClosure on all of them.
   void iterate(HeapRegionClosure* cl) const;
+  void par_iterate(HeapRegionClosure* cl,
+                   HeapRegionClaimer* hr_claimer,
+                   uint worker_id,
+                   uint total_workers) const;
 
   void iterate_optional(HeapRegionClosure* cl) const;
 
   size_t recorded_rs_length() { return _recorded_rs_length; }
 
< prev index next >