< prev index next >
src/hotspot/share/gc/shared/cardTableRS.hpp
Print this page
*** 30,40 ****
#include "oops/oop.hpp"
class DirtyCardToOopClosure;
class Generation;
class Space;
- class OopsInGenClosure;
// Helper to remember modified oops in all clds.
class CLDRemSet {
bool _accumulate_modified_oops;
public:
--- 30,39 ----
*** 102,122 ****
CardTableRS(MemRegion whole_heap, bool scanned_concurrently);
~CardTableRS();
CLDRemSet* cld_rem_set() { return &_cld_rem_set; }
! void younger_refs_in_space_iterate(Space* sp, OopsInGenClosure* cl, uint n_threads);
virtual void verify_used_region_at_save_marks(Space* sp) const NOT_DEBUG_RETURN;
// Override.
void prepare_for_younger_refs_iterate(bool parallel);
! // Card table entries are cleared before application; "blk" is
! // responsible for dirtying if the oop is still older-to-younger after
! // closure application.
! void younger_refs_iterate(Generation* g, OopsInGenClosure* blk, uint n_threads);
void inline_write_ref_field_gc(void* field, oop new_val) {
CardValue* byte = byte_for(field);
*byte = youngergen_card;
}
--- 101,119 ----
CardTableRS(MemRegion whole_heap, bool scanned_concurrently);
~CardTableRS();
CLDRemSet* cld_rem_set() { return &_cld_rem_set; }
! void younger_refs_in_space_iterate(Space* sp, HeapWord* gen_boundary, OopIterateClosure* cl, uint n_threads);
virtual void verify_used_region_at_save_marks(Space* sp) const NOT_DEBUG_RETURN;
// Override.
void prepare_for_younger_refs_iterate(bool parallel);
! // Card table entries are cleared before application;
! void at_younger_refs_iterate();
void inline_write_ref_field_gc(void* field, oop new_val) {
CardValue* byte = byte_for(field);
*byte = youngergen_card;
}
*** 163,180 ****
bool card_may_have_been_dirty(CardValue cv);
// Iterate over the portion of the card-table which covers the given
// region mr in the given space and apply cl to any dirty sub-regions
// of mr. Clears the dirty cards as they are processed.
! void non_clean_card_iterate_possibly_parallel(Space* sp, MemRegion mr,
! OopsInGenClosure* cl, CardTableRS* ct,
uint n_threads);
// Work method used to implement non_clean_card_iterate_possibly_parallel()
// above in the parallel case.
virtual void non_clean_card_iterate_parallel_work(Space* sp, MemRegion mr,
! OopsInGenClosure* cl, CardTableRS* ct,
uint n_threads);
// This is an array, one element per covered region of the card table.
// Each entry is itself an array, with one element per chunk in the
// covered region. Each entry of these arrays is the lowest non-clean
--- 160,178 ----
bool card_may_have_been_dirty(CardValue cv);
// Iterate over the portion of the card-table which covers the given
// region mr in the given space and apply cl to any dirty sub-regions
// of mr. Clears the dirty cards as they are processed.
! void non_clean_card_iterate_possibly_parallel(Space* sp, HeapWord* gen_boundary,
! MemRegion mr,
! OopIterateClosure* cl, CardTableRS* ct,
uint n_threads);
// Work method used to implement non_clean_card_iterate_possibly_parallel()
// above in the parallel case.
virtual void non_clean_card_iterate_parallel_work(Space* sp, MemRegion mr,
! OopIterateClosure* cl, CardTableRS* ct,
uint n_threads);
// This is an array, one element per covered region of the card table.
// Each entry is itself an array, with one element per chunk in the
// covered region. Each entry of these arrays is the lowest non-clean
< prev index next >