hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp
changeset 28207 6ad23566cbef
parent 27889 7d50f95e0076
child 29470 e34bbcd36e53
equal deleted inserted replaced
28206:98aac9173d5f 28207:6ad23566cbef
    65 // knows how to get the G1 heap and how to use the bitmap
    65 // knows how to get the G1 heap and how to use the bitmap
    66 // in the concurrent marker used by G1 to filter remembered
    66 // in the concurrent marker used by G1 to filter remembered
    67 // sets.
    67 // sets.
    68 
    68 
    69 class HeapRegionDCTOC : public DirtyCardToOopClosure {
    69 class HeapRegionDCTOC : public DirtyCardToOopClosure {
    70 public:
    70 private:
    71   // Specification of possible DirtyCardToOopClosure filtering.
       
    72   enum FilterKind {
       
    73     NoFilterKind,
       
    74     IntoCSFilterKind,
       
    75     OutOfRegionFilterKind
       
    76   };
       
    77 
       
    78 protected:
       
    79   HeapRegion* _hr;
    71   HeapRegion* _hr;
    80   FilterKind _fk;
    72   G1ParPushHeapRSClosure* _rs_scan;
    81   G1CollectedHeap* _g1;
    73   G1CollectedHeap* _g1;
    82 
    74 
    83   // Walk the given memory region from bottom to (actual) top
    75   // Walk the given memory region from bottom to (actual) top
    84   // looking for objects and applying the oop closure (_cl) to
    76   // looking for objects and applying the oop closure (_cl) to
    85   // them. The base implementation of this treats the area as
    77   // them. The base implementation of this treats the area as
    88   // or possibly more efficient walking.
    80   // or possibly more efficient walking.
    89   void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
    81   void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
    90 
    82 
    91 public:
    83 public:
    92   HeapRegionDCTOC(G1CollectedHeap* g1,
    84   HeapRegionDCTOC(G1CollectedHeap* g1,
    93                   HeapRegion* hr, ExtendedOopClosure* cl,
    85                   HeapRegion* hr,
    94                   CardTableModRefBS::PrecisionStyle precision,
    86                   G1ParPushHeapRSClosure* cl,
    95                   FilterKind fk);
    87                   CardTableModRefBS::PrecisionStyle precision);
    96 };
    88 };
    97 
    89 
    98 // The complicating factor is that BlockOffsetTable diverged
    90 // The complicating factor is that BlockOffsetTable diverged
    99 // significantly, and we need functionality that is only in the G1 version.
    91 // significantly, and we need functionality that is only in the G1 version.
   100 // So I copied that code, which led to an alternate G1 version of
    92 // So I copied that code, which led to an alternate G1 version of