Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 4827:2e966d967c5c
7121547: G1: High number mispredicted branches while iterating over the marking bitmap
Summary: There is a high number of mispredicted branches associated with calling BitMap::iteratate() from within CMBitMapRO::iterate(). Implement a version of CMBitMapRO::iterate() directly using inline-able routines.
Reviewed-by: tonyp, iveresov
author | johnc |
---|---|
date | Fri, 13 Jan 2012 13:27:48 -0800 |
parents | 2ace1c4ee8da |
children | 851b58c26def |
comparison
equal
deleted
inserted
replaced
4788:9d4f4a1825e4 | 4827:2e966d967c5c |
---|---|
82 "outside underlying space?"); | 82 "outside underlying space?"); |
83 return _bm.at(heapWordToOffset(addr)); | 83 return _bm.at(heapWordToOffset(addr)); |
84 } | 84 } |
85 | 85 |
86 // iteration | 86 // iteration |
87 bool iterate(BitMapClosure* cl) { return _bm.iterate(cl); } | 87 inline bool iterate(BitMapClosure* cl, MemRegion mr); |
88 bool iterate(BitMapClosure* cl, MemRegion mr); | 88 inline bool iterate(BitMapClosure* cl); |
89 | 89 |
90 // Return the address corresponding to the next marked bit at or after | 90 // Return the address corresponding to the next marked bit at or after |
91 // "addr", and before "limit", if "limit" is non-NULL. If there is no | 91 // "addr", and before "limit", if "limit" is non-NULL. If there is no |
92 // such bit, returns "limit" if that is non-NULL, or else "endWord()". | 92 // such bit, returns "limit" if that is non-NULL, or else "endWord()". |
93 HeapWord* getNextMarkedWordAddress(HeapWord* addr, | 93 HeapWord* getNextMarkedWordAddress(HeapWord* addr, |