< prev index next >
src/share/vm/gc_implementation/g1/heapRegion.hpp
Print this page
rev 7178 : 8067655: Clean up G1 remembered set oop iteration
Summary: Pass on the static type G1ParPushHeapRSClosure to allow oop_iterate devirtualization
Reviewed-by: jmasa, kbarrett
*** 65,85 ****
// knows how to get the G1 heap and how to use the bitmap
// in the concurrent marker used by G1 to filter remembered
// sets.
class HeapRegionDCTOC : public DirtyCardToOopClosure {
! public:
! // Specification of possible DirtyCardToOopClosure filtering.
! enum FilterKind {
! NoFilterKind,
! IntoCSFilterKind,
! OutOfRegionFilterKind
! };
!
! protected:
HeapRegion* _hr;
! FilterKind _fk;
G1CollectedHeap* _g1;
// Walk the given memory region from bottom to (actual) top
// looking for objects and applying the oop closure (_cl) to
// them. The base implementation of this treats the area as
--- 65,77 ----
// knows how to get the G1 heap and how to use the bitmap
// in the concurrent marker used by G1 to filter remembered
// sets.
class HeapRegionDCTOC : public DirtyCardToOopClosure {
! private:
HeapRegion* _hr;
! G1ParPushHeapRSClosure* _rs_scan;
G1CollectedHeap* _g1;
// Walk the given memory region from bottom to (actual) top
// looking for objects and applying the oop closure (_cl) to
// them. The base implementation of this treats the area as
*** 88,100 ****
// or possibly more efficient walking.
void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
public:
HeapRegionDCTOC(G1CollectedHeap* g1,
! HeapRegion* hr, ExtendedOopClosure* cl,
! CardTableModRefBS::PrecisionStyle precision,
! FilterKind fk);
};
// The complicating factor is that BlockOffsetTable diverged
// significantly, and we need functionality that is only in the G1 version.
// So I copied that code, which led to an alternate G1 version of
--- 80,92 ----
// or possibly more efficient walking.
void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
public:
HeapRegionDCTOC(G1CollectedHeap* g1,
! HeapRegion* hr,
! G1ParPushHeapRSClosure* cl,
! CardTableModRefBS::PrecisionStyle precision);
};
// The complicating factor is that BlockOffsetTable diverged
// significantly, and we need functionality that is only in the G1 version.
// So I copied that code, which led to an alternate G1 version of
< prev index next >