< 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 >