comparison src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp @ 808:353ba4575581

6814552: par compact - some compilers fail to optimize bitmap code Reviewed-by: tonyp, iveresov, jmasa, ysr
author jcoomes
date Sun, 07 Jun 2009 22:08:24 -0700
parents 37f87013dfd8
children bd02caa94611
comparison
equal deleted inserted replaced
807:d44bdab1c03d 808:353ba4575581
175 private: 175 private:
176 // Each bit in the bitmap represents one unit of 'object granularity.' Objects 176 // Each bit in the bitmap represents one unit of 'object granularity.' Objects
177 // are double-word aligned in 32-bit VMs, but not in 64-bit VMs, so the 32-bit 177 // are double-word aligned in 32-bit VMs, but not in 64-bit VMs, so the 32-bit
178 // granularity is 2, 64-bit is 1. 178 // granularity is 2, 64-bit is 1.
179 static inline size_t obj_granularity() { return size_t(MinObjAlignment); } 179 static inline size_t obj_granularity() { return size_t(MinObjAlignment); }
180 static inline int obj_granularity_shift() { return LogMinObjAlignment; }
180 181
181 HeapWord* _region_start; 182 HeapWord* _region_start;
182 size_t _region_size; 183 size_t _region_size;
183 BitMap _beg_bits; 184 BitMap _beg_bits;
184 BitMap _end_bits; 185 BitMap _end_bits;
297 } 298 }
298 299
299 inline size_t 300 inline size_t
300 ParMarkBitMap::bits_to_words(idx_t bits) 301 ParMarkBitMap::bits_to_words(idx_t bits)
301 { 302 {
302 return bits * obj_granularity(); 303 return bits << obj_granularity_shift();
303 } 304 }
304 305
305 inline ParMarkBitMap::idx_t 306 inline ParMarkBitMap::idx_t
306 ParMarkBitMap::words_to_bits(size_t words) 307 ParMarkBitMap::words_to_bits(size_t words)
307 { 308 {
308 return words / obj_granularity(); 309 return words >> obj_granularity_shift();
309 } 310 }
310 311
311 inline size_t ParMarkBitMap::obj_size(idx_t beg_bit, idx_t end_bit) const 312 inline size_t ParMarkBitMap::obj_size(idx_t beg_bit, idx_t end_bit) const
312 { 313 {
313 DEBUG_ONLY(verify_bit(beg_bit);) 314 DEBUG_ONLY(verify_bit(beg_bit);)