< prev index next >
src/hotspot/share/gc/g1/g1CollectionSet.hpp
Print this page
*** 276,285 ****
--- 276,295 ----
// 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,297 ****
--- 298,311 ----
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 >