< prev index next >
src/hotspot/share/utilities/hashtable.inline.hpp
Print this page
@@ -41,19 +41,21 @@
initialize(table_size, entry_size, 0);
_buckets = NEW_C_HEAP_ARRAY2(HashtableBucket<F>, table_size, F, CURRENT_PC);
for (int index = 0; index < _table_size; index++) {
_buckets[index].clear();
}
+ _stats_rate = TableRateStatistics();
}
template <MEMFLAGS F> inline BasicHashtable<F>::BasicHashtable(int table_size, int entry_size,
HashtableBucket<F>* buckets,
int number_of_entries) {
// Called on startup, no locking needed
initialize(table_size, entry_size, number_of_entries);
_buckets = buckets;
+ _stats_rate = TableRateStatistics();
}
template <MEMFLAGS F> inline BasicHashtable<F>::~BasicHashtable() {
for (int i = 0; i < _entry_blocks->length(); i++) {
FREE_C_HEAP_ARRAY(char, _entry_blocks->at(i));
@@ -99,21 +101,28 @@
}
template <MEMFLAGS F> inline void BasicHashtable<F>::set_entry(int index, BasicHashtableEntry<F>* entry) {
_buckets[index].set_entry(entry);
+ if (entry != NULL) {
+ _stats_rate.add();
+ } else {
+ _stats_rate.remove();
+ }
}
template <MEMFLAGS F> inline void BasicHashtable<F>::add_entry(int index, BasicHashtableEntry<F>* entry) {
entry->set_next(bucket(index));
_buckets[index].set_entry(entry);
++_number_of_entries;
+ _stats_rate.add();
}
template <MEMFLAGS F> inline void BasicHashtable<F>::free_entry(BasicHashtableEntry<F>* entry) {
entry->set_next(_free_list);
_free_list = entry;
--_number_of_entries;
+ _stats_rate.remove();
}
#endif // SHARE_UTILITIES_HASHTABLE_INLINE_HPP
< prev index next >