< prev index next >

src/hotspot/share/gc/parallel/parMarkBitMap.inline.hpp

Print this page
rev 57098 : [mq]: max_size

*** 24,33 **** --- 24,34 ---- #ifndef SHARE_GC_PARALLEL_PARMARKBITMAP_INLINE_HPP #define SHARE_GC_PARALLEL_PARMARKBITMAP_INLINE_HPP #include "gc/parallel/parMarkBitMap.hpp" + #include "utilities/align.hpp" #include "utilities/bitMap.inline.hpp" inline ParMarkBitMap::ParMarkBitMap(): _region_start(NULL), _region_size(0), _beg_bits(), _end_bits(), _virtual_space(NULL), _reserved_byte_size(0) { }
*** 144,163 **** inline bool ParMarkBitMap::mark_obj(oop obj, int size) { return mark_obj((HeapWord*)obj, (size_t)size); } ! inline BitMap::idx_t ParMarkBitMap::addr_to_bit(HeapWord* addr) const { DEBUG_ONLY(verify_addr(addr);) return words_to_bits(pointer_delta(addr, region_start())); } inline HeapWord* ParMarkBitMap::bit_to_addr(idx_t bit) const { DEBUG_ONLY(verify_bit(bit);) return region_start() + bits_to_words(bit); } inline ParMarkBitMap::idx_t ParMarkBitMap::find_obj_beg(idx_t beg, idx_t end) const { return _beg_bits.get_next_one_offset_aligned_right(beg, end); } inline ParMarkBitMap::idx_t ParMarkBitMap::find_obj_end(idx_t beg, idx_t end) const { --- 145,170 ---- inline bool ParMarkBitMap::mark_obj(oop obj, int size) { return mark_obj((HeapWord*)obj, (size_t)size); } ! inline ParMarkBitMap::idx_t ParMarkBitMap::addr_to_bit(HeapWord* addr) const { DEBUG_ONLY(verify_addr(addr);) return words_to_bits(pointer_delta(addr, region_start())); } inline HeapWord* ParMarkBitMap::bit_to_addr(idx_t bit) const { DEBUG_ONLY(verify_bit(bit);) return region_start() + bits_to_words(bit); } + inline ParMarkBitMap::idx_t ParMarkBitMap::align_range_end(idx_t range_end) const { + // size is aligned, so if range_end <= size then so is aligned result. + assert(range_end <= size(), "range end out of range"); + return align_up(range_end, BitsPerWord); + } + inline ParMarkBitMap::idx_t ParMarkBitMap::find_obj_beg(idx_t beg, idx_t end) const { return _beg_bits.get_next_one_offset_aligned_right(beg, end); } inline ParMarkBitMap::idx_t ParMarkBitMap::find_obj_end(idx_t beg, idx_t end) const {
*** 165,183 **** } inline HeapWord* ParMarkBitMap::find_obj_beg(HeapWord* beg, HeapWord* end) const { const idx_t beg_bit = addr_to_bit(beg); const idx_t end_bit = addr_to_bit(end); ! const idx_t search_end = BitMap::word_align_up(end_bit); const idx_t res_bit = MIN2(find_obj_beg(beg_bit, search_end), end_bit); return bit_to_addr(res_bit); } inline HeapWord* ParMarkBitMap::find_obj_end(HeapWord* beg, HeapWord* end) const { const idx_t beg_bit = addr_to_bit(beg); const idx_t end_bit = addr_to_bit(end); ! const idx_t search_end = BitMap::word_align_up(end_bit); const idx_t res_bit = MIN2(find_obj_end(beg_bit, search_end), end_bit); return bit_to_addr(res_bit); } #ifdef ASSERT --- 172,190 ---- } inline HeapWord* ParMarkBitMap::find_obj_beg(HeapWord* beg, HeapWord* end) const { const idx_t beg_bit = addr_to_bit(beg); const idx_t end_bit = addr_to_bit(end); ! const idx_t search_end = align_range_end(end_bit); const idx_t res_bit = MIN2(find_obj_beg(beg_bit, search_end), end_bit); return bit_to_addr(res_bit); } inline HeapWord* ParMarkBitMap::find_obj_end(HeapWord* beg, HeapWord* end) const { const idx_t beg_bit = addr_to_bit(beg); const idx_t end_bit = addr_to_bit(end); ! const idx_t search_end = align_range_end(end_bit); const idx_t res_bit = MIN2(find_obj_end(beg_bit, search_end), end_bit); return bit_to_addr(res_bit); } #ifdef ASSERT
< prev index next >