< prev index next >
src/hotspot/share/gc/g1/g1HotCardCache.hpp
Print this page
rev 56992 : imported patch 8227739-merge-scan-rs-update-rs-cost
*** 79,88 ****
--- 79,93 ----
volatile size_t _hot_cache_par_claimed_idx;
char _pad_after[DEFAULT_CACHE_LINE_SIZE];
+ // Records whether insertion overflowed the hot card cache at least once. This
+ // avoids the need for a separate atomic counter of how many valid entries are
+ // in the HCC.
+ bool _cache_wrapped_around;
+
// The number of cached cards a thread claims when flushing the cache
static const int ClaimChunkSize = 32;
public:
static bool default_use_cache() {
*** 130,145 ****
--- 135,155 ----
}
// Zeros the values in the card counts table for the given region
void reset_card_counts(HeapRegion* hr);
+ // Number of entries in the HCC.
+ size_t num_entries() const {
+ return _cache_wrapped_around ? _hot_cache_size : _hot_cache_idx + 1;
+ }
private:
void reset_hot_cache_internal() {
assert(_hot_cache != NULL, "Logic");
_hot_cache_idx = 0;
for (size_t i = 0; i < _hot_cache_size; i++) {
_hot_cache[i] = NULL;
}
+ _cache_wrapped_around = false;
}
};
#endif // SHARE_GC_G1_G1HOTCARDCACHE_HPP
< prev index next >