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