< prev index next >
src/share/vm/gc_implementation/g1/heapRegion.hpp
Print this page
rev 9374 : 8259659: Missing memory fences between memory allocation and refinement
Summary: Refactored to have needed barrier
Reviewed-by: tschatzl, ehelin
*** 419,428 ****
--- 419,429 ----
bool isHumongous() const { return _type.is_humongous(); }
bool startsHumongous() const { return _type.is_starts_humongous(); }
bool continuesHumongous() const { return _type.is_continues_humongous(); }
bool is_old() const { return _type.is_old(); }
+ bool is_old_or_humongous() const { return _type.is_old_or_humongous(); }
// For a humongous region, region in which it starts.
HeapRegion* humongous_start_region() const {
return _humongous_start_region;
}
*** 716,736 ****
// "cl->abort()".) Return of "NULL" indicates that the iteration
// completed.
HeapWord*
object_iterate_mem_careful(MemRegion mr, ObjectClosure* cl);
! // Iterate over the card in the card designated by card_ptr,
! // applying cl to all references in the region.
! // mr: the memory region covered by the card.
! // card_ptr: if we decide that the card is not young and we iterate
! // over it, we'll clean the card before we start the iteration.
! // Returns true if the card was successfully processed, false if an
! // unparsable part of the heap was encountered, which should only
! // happen when invoked concurrently with the mutator.
bool oops_on_card_seq_iterate_careful(MemRegion mr,
! FilterOutOfRegionClosure* cl,
! jbyte* card_ptr);
size_t recorded_rs_length() const { return _recorded_rs_length; }
double predicted_elapsed_time_ms() const { return _predicted_elapsed_time_ms; }
size_t predicted_bytes_to_copy() const { return _predicted_bytes_to_copy; }
--- 717,738 ----
// "cl->abort()".) Return of "NULL" indicates that the iteration
// completed.
HeapWord*
object_iterate_mem_careful(MemRegion mr, ObjectClosure* cl);
! // Iterate over the objects overlapping part of a card, applying cl
! // to all references in the region. This is a helper for
! // G1RemSet::refine_card, and is tightly coupled with it.
! // mr: the memory region covered by the card, trimmed to the
! // allocated space for this region. Must not be empty.
! // This region must be old or humongous.
! // Returns true if the designated objects were successfully
! // processed, false if an unparsable part of the heap was
! // encountered; that only happens when invoked concurrently with the
! // mutator.
bool oops_on_card_seq_iterate_careful(MemRegion mr,
! FilterOutOfRegionClosure* cl);
size_t recorded_rs_length() const { return _recorded_rs_length; }
double predicted_elapsed_time_ms() const { return _predicted_elapsed_time_ms; }
size_t predicted_bytes_to_copy() const { return _predicted_bytes_to_copy; }
< prev index next >