hotspot/src/share/vm/gc/shared/space.hpp
changeset 35492 c8c0273e6b91
parent 35061 be6025ebffea
child 35862 411842d0c882
equal deleted inserted replaced
35491:663c609dfeee 35492:c8c0273e6b91
   674 };
   674 };
   675 
   675 
   676 
   676 
   677 // A dirty card to oop closure that does filtering.
   677 // A dirty card to oop closure that does filtering.
   678 // It knows how to filter out objects that are outside of the _boundary.
   678 // It knows how to filter out objects that are outside of the _boundary.
   679 class Filtering_DCTOC : public DirtyCardToOopClosure {
   679 class FilteringDCTOC : public DirtyCardToOopClosure {
   680 protected:
   680 protected:
   681   // Override.
   681   // Override.
   682   void walk_mem_region(MemRegion mr,
   682   void walk_mem_region(MemRegion mr,
   683                        HeapWord* bottom, HeapWord* top);
   683                        HeapWord* bottom, HeapWord* top);
   684 
   684 
   695   virtual void walk_mem_region_with_cl(MemRegion mr,
   695   virtual void walk_mem_region_with_cl(MemRegion mr,
   696                                        HeapWord* bottom, HeapWord* top,
   696                                        HeapWord* bottom, HeapWord* top,
   697                                        FilteringClosure* cl) = 0;
   697                                        FilteringClosure* cl) = 0;
   698 
   698 
   699 public:
   699 public:
   700   Filtering_DCTOC(Space* sp, ExtendedOopClosure* cl,
   700   FilteringDCTOC(Space* sp, ExtendedOopClosure* cl,
   701                   CardTableModRefBS::PrecisionStyle precision,
   701                   CardTableModRefBS::PrecisionStyle precision,
   702                   HeapWord* boundary) :
   702                   HeapWord* boundary) :
   703     DirtyCardToOopClosure(sp, cl, precision, boundary) {}
   703     DirtyCardToOopClosure(sp, cl, precision, boundary) {}
   704 };
   704 };
   705 
   705 
   711 //    contained by the space is bounded by the end of the contiguous
   711 //    contained by the space is bounded by the end of the contiguous
   712 //    region of the space.
   712 //    region of the space.
   713 // 2. That the space is really made up of objects and not just
   713 // 2. That the space is really made up of objects and not just
   714 //    blocks.
   714 //    blocks.
   715 
   715 
   716 class ContiguousSpaceDCTOC : public Filtering_DCTOC {
   716 class ContiguousSpaceDCTOC : public FilteringDCTOC {
   717 protected:
   717 protected:
   718   // Overrides.
   718   // Overrides.
   719   HeapWord* get_actual_top(HeapWord* top, HeapWord* top_obj);
   719   HeapWord* get_actual_top(HeapWord* top, HeapWord* top_obj);
   720 
   720 
   721   virtual void walk_mem_region_with_cl(MemRegion mr,
   721   virtual void walk_mem_region_with_cl(MemRegion mr,
   727 
   727 
   728 public:
   728 public:
   729   ContiguousSpaceDCTOC(ContiguousSpace* sp, ExtendedOopClosure* cl,
   729   ContiguousSpaceDCTOC(ContiguousSpace* sp, ExtendedOopClosure* cl,
   730                        CardTableModRefBS::PrecisionStyle precision,
   730                        CardTableModRefBS::PrecisionStyle precision,
   731                        HeapWord* boundary) :
   731                        HeapWord* boundary) :
   732     Filtering_DCTOC(sp, cl, precision, boundary)
   732     FilteringDCTOC(sp, cl, precision, boundary)
   733   {}
   733   {}
   734 };
   734 };
   735 
   735 
   736 // A ContigSpace that Supports an efficient "block_start" operation via
   736 // A ContigSpace that Supports an efficient "block_start" operation via
   737 // a BlockOffsetArray (whose BlockOffsetSharedArray may be shared with
   737 // a BlockOffsetArray (whose BlockOffsetSharedArray may be shared with