< 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 >