Mercurial > hg > graal-compiler
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);) |