< prev index next >
src/hotspot/share/gc/shared/space.hpp
Print this page
*** 167,177 ****
virtual size_t free() const = 0;
// Iterate over all the ref-containing fields of all objects in the
// space, calling "cl.do_oop" on each. Fields in objects allocated by
// applications of the closure are not included in the iteration.
! virtual void oop_iterate(ExtendedOopClosure* cl);
// Iterate over all objects in the space, calling "cl.do_object" on
// each. Objects allocated by applications of the closure are not
// included in the iteration.
virtual void object_iterate(ObjectClosure* blk) = 0;
--- 167,177 ----
virtual size_t free() const = 0;
// Iterate over all the ref-containing fields of all objects in the
// space, calling "cl.do_oop" on each. Fields in objects allocated by
// applications of the closure are not included in the iteration.
! virtual void oop_iterate(OopIterateClosure* cl);
// Iterate over all objects in the space, calling "cl.do_object" on
// each. Objects allocated by applications of the closure are not
// included in the iteration.
virtual void object_iterate(ObjectClosure* blk) = 0;
*** 181,191 ****
// Create and return a new dirty card to oop closure. Can be
// overridden to return the appropriate type of closure
// depending on the type of space in which the closure will
// operate. ResourceArea allocated.
! virtual DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary,
bool parallel);
// If "p" is in the space, returns the address of the start of the
--- 181,191 ----
// Create and return a new dirty card to oop closure. Can be
// overridden to return the appropriate type of closure
// depending on the type of space in which the closure will
// operate. ResourceArea allocated.
! virtual DirtyCardToOopClosure* new_dcto_cl(OopIterateClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary,
bool parallel);
// If "p" is in the space, returns the address of the start of the
*** 254,264 ****
// to support other space types. See ContiguousDCTOC for a sub-class
// that works with ContiguousSpaces.
class DirtyCardToOopClosure: public MemRegionClosureRO {
protected:
! ExtendedOopClosure* _cl;
Space* _sp;
CardTable::PrecisionStyle _precision;
HeapWord* _boundary; // If non-NULL, process only non-NULL oops
// pointing below boundary.
HeapWord* _min_done; // ObjHeadPreciseArray precision requires
--- 254,264 ----
// to support other space types. See ContiguousDCTOC for a sub-class
// that works with ContiguousSpaces.
class DirtyCardToOopClosure: public MemRegionClosureRO {
protected:
! OopIterateClosure* _cl;
Space* _sp;
CardTable::PrecisionStyle _precision;
HeapWord* _boundary; // If non-NULL, process only non-NULL oops
// pointing below boundary.
HeapWord* _min_done; // ObjHeadPreciseArray precision requires
*** 284,294 ****
// classes should override this to provide more accurate
// or possibly more efficient walking.
virtual void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
public:
! DirtyCardToOopClosure(Space* sp, ExtendedOopClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
_sp(sp), _cl(cl), _precision(precision), _boundary(boundary),
_min_done(NULL) {
NOT_PRODUCT(_last_bottom = NULL);
--- 284,294 ----
// classes should override this to provide more accurate
// or possibly more efficient walking.
virtual void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
public:
! DirtyCardToOopClosure(Space* sp, OopIterateClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
_sp(sp), _cl(cl), _precision(precision), _boundary(boundary),
_min_done(NULL) {
NOT_PRODUCT(_last_bottom = NULL);
*** 580,590 ****
virtual HeapWord* allocate(size_t word_size);
virtual HeapWord* par_allocate(size_t word_size);
HeapWord* allocate_aligned(size_t word_size);
// Iteration
! void oop_iterate(ExtendedOopClosure* cl);
void object_iterate(ObjectClosure* blk);
// For contiguous spaces this method will iterate safely over objects
// in the space (i.e., between bottom and top) when at a safepoint.
void safe_object_iterate(ObjectClosure* blk);
--- 580,590 ----
virtual HeapWord* allocate(size_t word_size);
virtual HeapWord* par_allocate(size_t word_size);
HeapWord* allocate_aligned(size_t word_size);
// Iteration
! void oop_iterate(OopIterateClosure* cl);
void object_iterate(ObjectClosure* blk);
// For contiguous spaces this method will iterate safely over objects
// in the space (i.e., between bottom and top) when at a safepoint.
void safe_object_iterate(ObjectClosure* blk);
*** 619,629 ****
// set new iteration safe limit
set_concurrent_iteration_safe_limit(compaction_top());
}
// Override.
! DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary,
bool parallel);
// Apply "blk->do_oop" to the addresses of all reference fields in objects
--- 619,629 ----
// set new iteration safe limit
set_concurrent_iteration_safe_limit(compaction_top());
}
// Override.
! DirtyCardToOopClosure* new_dcto_cl(OopIterateClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary,
bool parallel);
// Apply "blk->do_oop" to the addresses of all reference fields in objects
*** 687,703 ****
// be a filtering closure which makes use of the _boundary.
// We offer two signatures, so the FilteringClosure static type is
// apparent.
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
! ExtendedOopClosure* cl) = 0;
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
FilteringClosure* cl) = 0;
public:
! FilteringDCTOC(Space* sp, ExtendedOopClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
DirtyCardToOopClosure(sp, cl, precision, boundary) {}
};
--- 687,703 ----
// be a filtering closure which makes use of the _boundary.
// We offer two signatures, so the FilteringClosure static type is
// apparent.
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
! OopIterateClosure* cl) = 0;
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
FilteringClosure* cl) = 0;
public:
! FilteringDCTOC(Space* sp, OopIterateClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
DirtyCardToOopClosure(sp, cl, precision, boundary) {}
};
*** 716,732 ****
// Overrides.
HeapWord* get_actual_top(HeapWord* top, HeapWord* top_obj);
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
! ExtendedOopClosure* cl);
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
FilteringClosure* cl);
public:
! ContiguousSpaceDCTOC(ContiguousSpace* sp, ExtendedOopClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
FilteringDCTOC(sp, cl, precision, boundary)
{}
};
--- 716,732 ----
// Overrides.
HeapWord* get_actual_top(HeapWord* top, HeapWord* top_obj);
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
! OopIterateClosure* cl);
virtual void walk_mem_region_with_cl(MemRegion mr,
HeapWord* bottom, HeapWord* top,
FilteringClosure* cl);
public:
! ContiguousSpaceDCTOC(ContiguousSpace* sp, OopIterateClosure* cl,
CardTable::PrecisionStyle precision,
HeapWord* boundary) :
FilteringDCTOC(sp, cl, precision, boundary)
{}
};
< prev index next >