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