< prev index next >
src/share/vm/gc_implementation/shared/markBitMap.hpp
Print this page
rev 10661 : [backport] Cleanup unused bitmap methods
rev 10769 : [backport] Cherry-pick bulk MarkBitMap clearing methods
*** 33,42 ****
--- 33,43 ----
// A generic CM bit map. This is essentially a wrapper around the BitMap
// class, with one bit per (1<<_shifter) HeapWords.
class MarkBitMapRO VALUE_OBJ_CLASS_SPEC {
protected:
+ MemRegion _covered; // The heap area covered by this bitmap.
HeapWord* _bmStartWord; // base address of range covered by map
size_t _bmWordSize; // map size (in #HeapWords covered)
const int _shifter; // map to char or bit
BitMap _bm; // the bit map itself
*** 82,91 ****
--- 83,95 ----
// debugging
NOT_PRODUCT(bool covers(MemRegion rs) const;)
};
class MarkBitMap : public MarkBitMapRO {
+ private:
+ // Clear bitmap range
+ void do_clear(MemRegion mr, bool large);
public:
static size_t compute_size(size_t heap_size);
// Returns the amount of bytes on the heap between two marks in the bitmap.
static size_t mark_distance();
*** 104,113 ****
inline void mark(HeapWord* addr);
inline void clear(HeapWord* addr);
inline bool parMark(HeapWord* addr);
// Clear range. For larger regions, use *_large.
! void clear_range(MemRegion mr);
! void clear_range_large(MemRegion mr);
};
#endif // SHARE_VM_GC_SHARED_CMBITMAP_HPP
--- 108,118 ----
inline void mark(HeapWord* addr);
inline void clear(HeapWord* addr);
inline bool parMark(HeapWord* addr);
// Clear range. For larger regions, use *_large.
! void clear() { do_clear(_covered, true); }
! void clear_range(MemRegion mr) { do_clear(mr, false); }
! void clear_range_large(MemRegion mr) { do_clear(mr, true); }
};
#endif // SHARE_VM_GC_SHARED_CMBITMAP_HPP
< prev index next >