equal
deleted
inserted
replaced
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 |